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