我有一个List<int>
和List<customObject>
。 customObject类有一个ID属性。我如何才能获得仅包含使用LINQ的ID属性在List<int>
中的对象的List<customObject>
?过滤linq名单的财产价值
编辑:我接受Konrads的答案,因为它更容易/更直观地阅读。
我有一个List<int>
和List<customObject>
。 customObject类有一个ID属性。我如何才能获得仅包含使用LINQ的ID属性在List<int>
中的对象的List<customObject>
?过滤linq名单的财产价值
编辑:我接受Konrads的答案,因为它更容易/更直观地阅读。
var result = from o in objList where intList.Contains(o.ID) select o
未经检验的,但它会是这样的:
var matches = from o in objList
join i in intList on o.ID equals i
select o;
@Konrad只是测试它,和它的工作 - 我只是在那里我会写“i.ID”,而不是一个错字“一世”。
只是为了完整性(也许更容易阅读?),用“里”类似于马特的“加盟”:
var matches = from o in customObjectList
from i in intList
where o.ID == i
select o;
我有过类似的问题,刚才和使用低于解决方案如果已经有对象列表,则可以删除int列表中找不到的所有对象,只留下objList中的匹配项。
objList.RemoveAll(x => !intList.Contains(x.id));
请注意,使用连接而不是包含列表中的项目数量超过49时不起作用!你会得到错误:Some part of your SQL statement is nested too deeply. Rewrite the query or break it up into smaller queries.
using System.Linq;
objList.Where(x => intList.Contains(x.id));
是不是Linq`.Where`方法更简洁? (请参阅下面的答案) – 2013-11-07 13:24:58