如何使用linq从第二个集合中删除第一个集合中出现的每个项目?

时间:2013-08-31 18:53:50

标签: c# linq linq-to-objects

假设我有2个集合:

1){1, 2, 3, 5}
2){2, 5}

我想删除第一个集合中第二个集合中出现的每个项目,所以我会得到:

{1, 3}

问题:

  1. 如何使用Join OP(更好地使用扩展方法语法)执行此操作?
  2. 有没有什么方法可以像嵌套for / foreach循环那样迭代两个集合?
  3. 编辑:
    同时迭代两个集合您可以使用嵌套的from子句:

    from boy in boys
    from girl in girls
    select boy + "+" + girl
    

    我第一次发现这种语法是必要的:)

2 个答案:

答案 0 :(得分:5)

这可以满足您的需求

var solution = list1.Except(list2);

您可以找到有关“here除外”的更多详细信息,但基本知识是:

  

此方法首先返回那些未出现的元素   第二。它不会返回那些没有的元素   出现在第一位。

答案 1 :(得分:2)

易。使用Except

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