我有两个单独但又相关的类的两个列表。
class A
{
public int Id { get; set; }
public string Name { get; set; }
...
}
class B
{
public int Id { get; set; }
public string Name { get; set; }
...
}
对于List<A>
中的每个项目,我需要在A.Id == B.Id
中找到其对应项(List<B>
),如果存在,然后从{{1}更新A.Name
}。
我知道如何轻松地做到这一点。例如:
B.Name
这当然很慢。我认为O(n * m)?我正在处理每个列表中的几百万条记录。我在寻找更好的答案,但是还没有遇到任何直接适用的答案。任何帮助表示赞赏!
答案 0 :(得分:1)
使用字典的示例:
注意:您的原始示例的a。当在b列表中找不到匹配项时,名称设置为NULL:
var bDictionary = bList.ToDictionary(b => b.Id);
foreach (var a in aList)
{
bDictionary.TryGetValue(a.Id, out var b);
a.Name = b?.Name;
}