我有一个List<int>
和一个List<customObject>
。customObject 类有一个 ID 属性。如何获取List<customObject>
仅包含 ID 属性在List<int>
使用 LINQ 中的对象?
编辑:我接受了 Konrads 的回答,因为它更容易/更直观地阅读。
我有一个List<int>
和一个List<customObject>
。customObject 类有一个 ID 属性。如何获取List<customObject>
仅包含 ID 属性在List<int>
使用 LINQ 中的对象?
编辑:我接受了 Konrads 的回答,因为它更容易/更直观地阅读。
var result = from o in objList where intList.Contains(o.ID) select o
using System.Linq;
objList.Where(x => intList.Contains(x.id));
我刚才遇到了类似的问题并使用了以下解决方案。如果您已经有了对象列表,您可以删除所有在 int 列表中找不到的对象,只在 objList 中留下匹配项。
objList.RemoveAll(x => !intList.Contains(x.id));
未经测试,但它会是这样的:
var matches = from o in objList
join i in intList on o.ID equals i
select o;
@Konrad 刚刚对其进行了测试,它确实有效 - 我只是有一个错字,我写的是“i.ID”而不是“i”。
只是为了完整性(也许它更容易阅读?),使用类似于 Matt 的“join”的“where”:
var matches = from o in customObjectList
from i in intList
where o.ID == i
select o;
请注意,当列表中的项目数超过 49 时,使用联接而不是包含不起作用!你会得到错误:Some part of your SQL statement is nested too deeply. Rewrite the query or break it up into smaller queries.