2010-07-15 6 views
1

j'ai 2 collections doivent créer un 3 un si vous aimez en fusionnant les 2 et me donner un troisième avec tous les éléments uniques quefusion 2 collections et trouver tous les éléments uniques

   class Program 
       { 
       static void Main(string[] args) 
       { 

         ObservableCollection<Person> collectionA = new ObservableCollection<Person> 
                    { 
                    new Person {Id = 1, Name = "Name1", Surname = "Surname1"}, 
                    new Person {Id = 2, Name = "Name2", Surname = "Surname2"}, 
                    new Person {Id = 3, Name = "Name3", Surname = "Surname3"}, 
                    new Person {Id = 4, Name = "Name4", Surname = "Surname4"} 
                    }; 

        ObservableCollection<Person> collectionB = new ObservableCollection<Person> 
                    { 
                    new Person {Id = 5, Name = "Name5", Surname = "Surname5"}, 
                    new Person {Id = 2, Name = "Name2", Surname = "Surname2"}, 
                    new Person {Id = 6, Name = "Name6", Surname = "Surname6"}, 
                    new Person {Id = 4, Name = "Name4", Surname = "Surname4"} 
                    }; 

        ObservableCollection<Person> result=???? 
       } 
       } 

       public class Person 
       { 
       public int Id { get; set; } 
       public string Name { get; set; } 
       public string Surname { get; set; } 
       } 
      } 

Toutes les idées ? Merci beaucoup

EDIT CLARIFICATION

Je collectionA, je crée la collection B, comparer les deux collection ajouter un élément pour trouver tous les éléments eN Collectionb QUI NE FONT PAS EXISTE DANS lA cOLLECTION a ET cRÉER uNE cOLLECTION RÉSULTAT. Espérons clairement maintenant

+0

Essayez avec mon extension, cochez cette réponse: http://stackoverflow.com/questions/6294433/merging-2-lists- in-linq/17822661 # 17822661 – Luiggi

Répondre

2

Si Id est un identifiant unique de vous essayer personne celui-ci:

ObservableCollection<Person> result = new ObservableCollection<Person>(collectionB 
             .Where(p => !collectionA.Any(p2=>p2.Id==p.Id))); 
+0

merci beaucoup qui a fonctionné comme prévu.Merci – user9969

+0

Vous êtes les bienvenus: o) –

1

Edité réponse:

ObservableCollection<Person> result = new ObservableCollection<Person>(collectionB.Except(collectionA)); 

Notez que cela va créer une nouvelle collection qui n'est pas liée aux anciennes collections - donc si vous ajoutez une personne à collectionA, ils ne seront pas visibles dans result automatiquement .

+0

merci .Je ne comprends pas vraiment le résultat que je suis après. Je ai édité la question et clarifié.Je répète ici J'ai collectionA, puis je crée la collection B, comparez les deux collection ajouter un élément à trouver tous les éléments dans COLLECTIONB qui ne existe pas dans la collection A et créer une collection de résultats.Hope clair maintenant – user9969

+0

La réponse mise à jour utilise 'Except' au lieu de' Union'. –

+0

Salut ne fonctionne toujours pas. Je devrais obtenir 2 items Item 5 et 6 car ils n'existent pas dans collectionA. Donc le résultat devrait 2 éléments (5 et 6) .Apologie si pas clair – user9969

Questions connexes