嘿大家我正试图更清楚地了解LINQ。我有一组foreach循环用于遍历ID列表,然后我将其与对象ID列表进行比较,然后将它们添加到保存结果或比较的第3个列表中。我想知道LINQ中这段代码会是什么样子 list1 - > int ID列表 list2 - >对象列表
foreach (var mId in list1)
{
foreach (var m in list2)
{
if (m.Obj.Id== mId)
{
result.Add(m);
break;
}
}
}
答案 0 :(得分:8)
基本上,这是执行连接的循环逻辑。使用查询语法(更具可读性),您可以这样做:
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);
答案 1 :(得分:2)
它看起来像这样:
var result = list2.Where(i => list1.Contains(i.Obj.Id));
答案 2 :(得分:1)
var query = list1.Join(list2, x => x, x => x.Obj.Id, (outer, inner) => inner);