Linq选择主列表的子集

时间:2012-01-30 19:02:57

标签: c# linq

我有一个复杂对象的主列表。

我有一个int id列表,我需要从主列表中选择相应的复杂对象。

这不起作用

MasterListofComplexObj.Where(u => MasterListofComplexObj.Select(i => i.Id).Contains(ChildListofIntIds));

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:20)

这应该有效:

var results = MasterListofComplexObj.Where(u => ChildListofIntIds.Contains(u.Id));

答案 1 :(得分:1)

var results = from obj in MasterListofComplexObj
    where ChildListofIntIds.Contains(obj.Id)
    select obj;

这是一个IEnumerable。您可能希望.FirstOrDefault()获取一个对象。

转换为 MasterListofComplexObj.Where(item => ChildListofIntIds.Contains(item.Id))

如果您想要对象本身而不是其中一个属性,则无需选择。

答案 2 :(得分:1)

另一个更普遍的问题是加入:

var results = MasterList.Join(ChildList, (m => m.Id), (c => c), ((m,c) => m));

我相信,但无法用引文或实验数据进行备份,那么Join会比Where - >更快。包含一块。