读取linq select查询的结果
本文关键字:结果 查询 select linq 读取 | 更新日期: 2023-09-27 18:12:41
我有两个列表(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]呢?地区变量?另外,如果没有返回结果,我该如何处理?我是否必须使用foreach,即使我知道只有最大值的结果?
好,听起来你可能想要一个连接这样你可以识别对,然后你可以复制区域:
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;
}
没有临时列表声明(from a1 in a
from b1 in b
where a1.id == b1.id && a1.region != b1.region
select new {selectedA = a1, selectedB = b1}).ToList().ForEach(x => x.selectedA.region = x.selectedB.region);
请查看此代码:
foreach(var a in listA)
{
var bForA = listB.FirstOrDefault(b => b.id == a.id);
if (bForA != null)
a.Region = bForA.Region;
}