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

Ale*_*voi 0 c# linq linq-to-objects

假设我有2个集合:

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

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

{1, 3}
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 我怎么能用JoinOP 做这个(更好的扩展方法语法)?
  2. 有没有什么方法可以迭代两个集合,就像嵌套for/foreach循环一样?

编辑:
同时迭代两个集合您可以使用嵌套from子句:

from boy in boys
from girl in girls
select boy + "+" + girl
Run Code Online (Sandbox Code Playgroud)

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

Sav*_*ave 5

这可以满足您的需求

var solution = list1.Except(list2);
Run Code Online (Sandbox Code Playgroud)

你可以在这里找到更多关于Except的细节,但基本的想法是:

此方法首先返回那些未出现在第二个元素中的元素.它也不会返回第二个中没有出现的元素.