2010-07-28 4 views
0

Linq est génial, mais il semble toujours me dérouter un peu.Linq Liste comparant

Ceci est ma dernière confusion:

que j'ai deux List<String> objets. Nous les appellerons sourceList et destList.

J'ai besoin d'un moyen de trouver la liste des chaînes qui sont dans sourceList et non dans destList ET trouver la liste des chaînes qui sont dans destList et non dans SourceList.

C'est un peu confus, alors voici l'exemple:

 
    sourceList destList 
    Orange  
    Apple   Apple 
    Grape   Grape 
        Kiwi 
        Banana 

Ainsi, le premier résultat que je cherche serait une liste avec Orange en elle. Le deuxième résultat serait la liste avec Kiwi et Banana dedans.

Une idée de comment faire avec Linq?

Répondre

3

Je le faisais juste aujourd'hui plus tôt aujourd'hui. Comme Sukru a dit que ce code devrait le faire pour vous:

List<string> firstResultList = sourceList.Except(destList); 
List<string> secondResultList = destList.Except(sourceList); 

firstResultList aura Orange et secondResultList aura Kiwi et banane.

5
sourceList.Except(destList) 

Doit obtenir une différence de source et de dest. Vous pouvez également faire l'inverse et combiner.

+0

http://www.hookedonlinq.com/ExceptOperator.ashx est un bon exemple de la méthode Except. Il y a une surcharge qui vous permet de créer votre propre fonction de comparaison. Pas nécessaire dans ce cas, mais pourrait être utile d'autres situations. – mpenrow