我有两个相同的自定义类型列表(A& B)(如下所示)
MyClass
{
id as string
acidity as double
region as string
}
我需要遍历列表A并查看id是否在列表B中。如果它在列表B中,我需要将列表B中的区域复制到列表A.执行此操作的最佳方法是什么?下面是一个简单的例子,
List A List B
id region id region
abc njp EU
mno plm US
jkl mno US
abc EU
结果我正在寻找
List A
id region
abc EU
mno US
jkl
我正在考虑循环遍历列表A中的每个id并使用如下所示的linq查询。但是我有两个问题,
var reg = from b in B
where A[i].id == b.id
select b.Region;
我知道上面的linq查询将返回一个值或没有值。那么如何将结果输入我的A [i] .Region变量?如果没有返回结果,我该如何处理?我是否必须使用foreach,即使我知道只有最大结果?
答案 0 :(得分:6)
好的,听起来你可能想要一个连接,以便你可以识别对,然后你可以复制这些区域:
var query = from itemA in listA
join itemB in listB on itemA.id equals itemB.id
select new { itemA, itemB };
foreach (var pair in query)
{
pair.itemA.Region = pair.itemB.Region;
}
答案 1 :(得分:0)
请参阅此代码:
foreach(var a in listA)
{
var bForA = listB.FirstOrDefault(b => b.id == a.id);
if (bForA != null)
a.Region = bForA.Region;
}