如何解决查找/匹配一个列表中另一个列表中每个项目的高效方法
我有两个单独但又相关的类的两个列表。
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)?我正在处理每个列表中的几百万条记录。我在寻找更好的答案,但是还没有遇到任何直接适用的答案。任何帮助表示赞赏!
解决方法
使用字典的示例:
注意:您的原始示例的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;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。