2011-07-11 70 views
12

我有两个字符串列表。如何获取它们之间的不同值列表或从第一个列表中删除第二个列表元素?获取C#中两个列表之间的清单列表

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

List<string> list2 = { "see"} 

结果应该是{"you","live"}

回答

34

在我看来像你需要Enumerable.Except()

var differences = list1.Except(list2); 

然后你就可以通过不同环路:

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

我如何获得“差异”的元素?它的变种没有列表 – kartal

+1

@salamonti - var关键字只是一个快捷方式。在这种情况下,这将是一个IEnumerable ,你可以迭代。 –

+0

我从来不喜欢使用var,除非绝对必要,但是尽管如此,chrs的例子 – BKSpurgeon

6

如果你想从第一个列表中的项目除了在项目第二个列表,使用

list1.Except(list2) 

如果你想获得在t他第一列表或第二列表,但不能同时,您可以使用

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

这是我找到唯一的好办法....

从两个列表独特

 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 } 
相关问题