Linq选择主列表的子集
本文关键字:子集 列表 选择 Linq | 更新日期: 2023-09-27 18:22:06
我有一个复杂对象的主列表。
我有一个int id列表,我需要从主列表中选择相应的复杂对象。
不起作用
MasterListofComplexObj.Where(u => MasterListofComplexObj.Select(i => i.Id).Contains(ChildListofIntIds));
任何帮助都将不胜感激。
这应该有效:
var results = MasterListofComplexObj.Where(u => ChildListofIntIds.Contains(u.Id));
var results = from obj in MasterListofComplexObj
where ChildListofIntIds.Contains(obj.Id)
select obj;
这是一个IEnumerable。您可能想要.FirstOrDefault()来获取一个对象。
翻译为ComplexObj.Where(item=>IntIds.Contains(item.Id)的子列表)
如果希望对象本身而不是其属性之一,则无需选择。
另一个更常见的问题是Join:
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();