26

我创建了一个两个 int 类型的列表,并使用 except 方法将仅在 list1 中的项目分配给 list1。例如

List<int> list1 = new List<int>();
List<int> list2 = new List<int>();

list1 = {1,2,3,4,5,6} // get items from the database
list2 = {3,5,6,7,8}   // get items from the database

list1 = list1.Except(list2); // gives me an error.

请给我建议。什么是正确的方法。

4

1 回答 1

68

Except方法返回IEnumerable,需要将结果转换为列表:

list1 = list1.Except(list2).ToList();

这是一个完整的例子:

List<String> origItems = new List<String>();
    origItems.Add("abc");
    origItems.Add("def");
    origItems.Add("ghi");
    
    List<String> newItems = new List<String>();
    newItems.Add("abc");
    newItems.Add("def");
    newItems.Add("super");
    newItems.Add("extra");
    
    List<String> itemsOnlyInNew = newItems.Except(origItems).ToList();
    foreach (String s in itemsOnlyInNew){
        Console.WriteLine(s);
    }

由于 origItems 中唯一不存在的项目是super & extra,结果输​​出为:

极好的

额外的

于 2012-10-24T18:51:21.050 回答