我有一个复杂对象的主列表。
我有一个整数id列表,需要从主列表中选择相应的复杂对象。
这种方法行不通。
MasterListofComplexObj.Where(u => MasterListofComplexObj.Select(i => i.Id).Contains(ChildListofIntIds));
任何帮助都将不胜感激。
var results = MasterListofComplexObj.Where(u => ChildListofIntIds.Contains(u.Id));
ComplexObj
,所以这是有意义的。 - BrokenGlassvar results = from obj in MasterListofComplexObj
where ChildListofIntIds.Contains(obj.Id)
select obj;
这是一个IEnumerable。您可能希望使用.FirstOrDefault()方法获取一个对象。
翻译为MasterListofComplexObj.Where(item => ChildListofIntIds.Contains(item.Id))
如果您想要对象本身而不是其属性之一,则无需选择。
var results = MasterList.Join(ChildList, (m => m.Id), (c => c), ((m,c) => m));
我相信,但无法用引文或实验数据支持,Join 操作会比 Where -> Contains 更快。
这个也可能同样有效:
double[] numbers1 = { 2.0, 2.0, 2.1, 2.2, 2.3, 2.3, 2.4, 2.5 };
double[] numbers2 = { 2.2 };
var isNumberTwoSubsetOfNumberOne = !numbers2.Except(numbers1).Any();