2017-07-21 10 views
0

J'ai la méthode suivante qui prend dans un tableau de MyExampleClass et id. Le problème actuel que j'essaie de résoudre est commenté dans la méthode.Comment comparer deux tableaux et mettre à jour le second tableau avec les valeurs du premier?

 public void Update(MyExampleClass[] example, int id) 
    { 
     //get the current values 
     var current = GetCurrentMyExampleClassValues(id); 

     //Compare the example and current arrays 

     //Update the OptedIn value for each item in the current array with the OptedIn value from the example array. 

     //The result is our new updated array 

     //Note that current array will always contain 3 items - Name1, Name2, Name3, 
     //but the example array can contain any combination of the 3. 
     var newArray = PsuedoCodeDoStuff(); 

     var result = _myService.Update(newArray); 
    } 


     private MyExampleClass[] GetCurrentMyExampleClassValues(int id) 
    { 
     var current = new MyExampleClass[] 
      { 
       new MyExampleClass {Name = "Name1", OptedIn = false }, 
       new MyExampleClass {Name = "Name2", OptedIn = true }, 
       new MyExampleClass {Name = "Name3", OptedIn = false } 
      }; 

     return current; 
    } 
+0

Comment voulez-vous comparer les éléments du tableau? Par valeur ou par identité? – hoodaticus

+0

Il n'est pas clair pour moi si vous voulez mettre à jour le tableau transmis (exemple) avec la valeur optedIn actuelle correspondante ou viceversa – Steve

+0

Le tableau courant aura toujours la valeur Nom1, Nom2, Nom3. Je tiens à mettre à jour la valeur OptedIn pour chacun d'entre eux en fonction de ce que l'utilisateur passe dans le tableau d'exemple. – generationalVision

Répondre

2

Il me semble que vous avez juste besoin de faire une boucle sur le tableau en cours. Chaque élément du tableau actuel est recherché dans le tableau d'exemple en utilisant Name comme clé. Si vous le trouvez, mettez à jour.

foreach(MyExampleClass item in current) 
{ 
    MyExampleClass exampleItem = example.FirstOrDefault(x => x.Name == item.Name); 
    if(exampleItem != null) 
     item.OptedIn = exampleItem.OptedIn; 
} 
+0

Merci Steve! C'est ce dont j'ai besoin. – generationalVision