2011-07-11 18 views
12

Tengo dos listas de cadenas. ¿Cómo obtengo la lista de valores distintos entre ellos o elimino los segundos elementos de la lista de la primera lista?Obtener una lista distinta entre dos listas en C#

List<string> list1 = { "see","you","live"} 

List<string> list2 = { "see"} 

El resultado debería ser {"you","live"}.

Respuesta

34

A mi me parece como que necesita Enumerable.Except():

var differences = list1.Except(list2); 

Y a continuación, puede recorrer las diferencias:

foreach(var difference in differences) 
{ 
    // work with each individual string here. 
} 
+1

¿cómo puedo obtener los elementos de "diferencias"? su var no list – kartal

+1

@salamonti - La palabra clave var es solo un atajo. En ese caso, sería un IEnumerable que podría repetir. –

+0

Nunca me gustó que se usara var a menos que fuera absolutamente necesario, pero no obstante, chrs para el ejemplo – BKSpurgeon

6

Si desea obtener los elementos de la primera lista, excepto los elementos de la segunda lista, use

list1.Except(list2) 

Si desea obtener elementos que están en t por primera lista o en la segunda lista, pero no ambos, puede utilizar

list1.Except(list2).Concat(list2.Except(list1)) 
0

Ésta es la buena forma de encuentro único ....

único de dos listas

 var A = new List<int>() { 1,2,3,4 }; 
     var B = new List<int>() { 1, 5, 6, 7 }; 

     var a= A.Except(B).ToList(); 
     // outputs List<int>(2) { 2,3,4 } 
     var b= B.Except(A).ToList(); 
     // outputs List<int>(2) { 5,6,7 } 
     var abint= B.Intersect(A).ToList(); 
     // outputs List<int>(2) { 1 } 
Cuestiones relacionadas