根据属性值过滤linq列表
时间:2020-03-05 18:45:56 来源:igfitidea点击:
我有一个List <int>和一个List <customObject>。 customObject类具有ID属性。如何使用LINQ获得仅包含ID属性在List <int>中的对象的List <customObject>?
编辑:我接受了Konrads的答案,因为它更容易/更直观地阅读。
解决方案
回答
未经测试,但是会是这样的:
var matches = from o in objList join i in intList on o.ID equals i select o;
@Konrad刚刚测试了它,它的确起作用了,我只是在输入" i.ID"而不是" i"的地方输入了错字。
回答
var result = from o in objList where intList.Contains(o.ID) select o
回答
仅出于完整性考虑(也许更容易阅读?),使用类似于Matt的" join"的" where":
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));