我有一个复杂对象的主列表。Linq Select主列表的子集
我有一个int id的列表,我需要从主列表中选择相应的复杂对象。
这不起作用
MasterListofComplexObj.Where(u => MasterListofComplexObj.Select(i => i.Id).Contains(ChildListofIntIds));
任何帮助,将不胜感激。
我有一个复杂对象的主列表。Linq Select主列表的子集
我有一个int id的列表,我需要从主列表中选择相应的复杂对象。
这不起作用
MasterListofComplexObj.Where(u => MasterListofComplexObj.Select(i => i.Id).Contains(ChildListofIntIds));
任何帮助,将不胜感激。
这应该工作:
var results = MasterListofComplexObj.Where(u => ChildListofIntIds.Contains(u.Id));
你在....感谢您的帮助。在我看来,这种逻辑是相反的,你把孩子列表看看是否包含你从肥大列表中选择的标识。再次感谢 – jim 2012-01-30 19:09:43
是的语法并不是你直觉上所期望的 - 但是因为你正在逐一查看每个'ComplexObj',它确实有意义 – BrokenGlass 2012-01-30 19:26:26
var results = from obj in MasterListofComplexObj
where ChildListofIntIds.Contains(obj.Id)
select obj;
这是一个IEnumerable。你可能想要.FirstOrDefault()它来获得一个对象。
转化为 MasterListofComplexObj.Where(项目=> ChildListofIntIds.Contains(item.Id))
没有,如果你想要对象本身和它的属性不是一个必要的选择。
寻找到会加入其他更普遍的事情:
var results = MasterList.Join(ChildList, (m => m.Id), (c => c), ((m,c) => m));
我相信,但不能与引文或备份实验数据,即加入将快于何处 - >包含一块。
您是否收到错误?还是错误的结果?你能给一些输入值和你期望的输出吗? – 2012-01-30 19:04:07