我有一个复杂对象的主列表。
我有一个int id列表,我需要从主列表中选择相应的复杂对象。
这不起作用
MasterListofComplexObj.Where(u => MasterListofComplexObj.Select(i => i.Id).Contains(ChildListofIntIds));
任何帮助将不胜感激。
答案 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 - >更快。包含一块。