Linq在IENumerable和List <>之间

Max*_*xim 0 .net c# linq

我填充了List<Object1>对象1包含2个字段(int id和string name)

我也是IEnumerable<Object2>由linq2sql生成的.带字段(id,name)

我需要从项目List<Object1>标识的是不存在的IEnumerable<Object2>.通过Key Field = id (比如sql中的位置..)

我用的代码就像

IEnumerable Object2
List<Object1> excepted =  Object2.Where(t => obj1.Contains == t.Id);
Run Code Online (Sandbox Code Playgroud)

谢谢!

Jon*_*eet 5

怎么样:

HashSet<string> knownIds = new HashSet<string>(list2.Select(x => x.Id));
var exceptions = list1.Where(x => !knownIds.Contains(x.Id));
Run Code Online (Sandbox Code Playgroud)

正如Earwicker正确地说的那样,这只会给出一个IEnumerable<Object1>- 如果你需要一个列表,将第二行更改为:

var exceptions = list1.Where(x => !knownIds.Contains(x.Id)).ToList();
Run Code Online (Sandbox Code Playgroud)