大家好,我想更清楚地了解LINQ。我有一组foreach循环,我用它来循环id列表,然后与对象id列表进行比较,然后将它们添加到保存结果或比较的第三个列表中。我想知道这段代码在LINQ中会是什么样子list1 -> int型id列表list2 ->对象列表
foreach (var mId in list1)
{
foreach (var m in list2)
{
if (m.Obj.Id== mId)
{
result.Add(m);
break;
}
}
}
基本上,这就是执行连接的循环逻辑。使用查询语法(可读性更强)可以这样做:
var result = from mId in list1
join m in list2 on m.Obj.Id equals mId
select m;
或者,如果你喜欢lambda:
var result = list1.Join(list2,
mId => mId,
m => m.Obj.Id,
(mId, m) => m);
看起来像这样:
var result = list2.Where(i => list1.Contains(i.Obj.Id));
var query = list1.Join(list2, x => x, x => x.Obj.Id, (outer, inner) => inner);