gpt4 book ai didi

c# - 比较两个列表并将匹配列保存到单独的列表

转载 作者:行者123 更新时间:2023-11-30 14:34:04 25 4
gpt4 key购买 nike

我在一个文件中进行解析,并将结果保存到 C# 中的一个列表中。然后我将数据库查询的所有结果解析到另一个列表。我想比较两个列表的匹配项并将结果保存到另一个列表以编写输出文件。我认为比较这两个列表比每次对每个人的数据库运行查询更快更好,因为他们的文件中有大约 16k 条记录。

列表 1. 列表 fileList 包含数据类型:string personsName

列表 2. 列表 DBresults 包含以下数据类型:string personsName、string address、string phoneNumber

尝试比较列表 1 和列表 2 以找到匹配项,然后将结果发送到另一个列表以写入输出。他们可能是列表 2 中每个人的多个结果,所以我需要找到每个实例。

从这样的 LINQ 查询开始,但我不是 LINQ 的专家,所以我需要一些帮助。

var matches = fileList.Where(a=>a.personsName == DBResults.where(s=>s,personsName).toList();

如果您认为自己有更快的方法,我也乐于接受其他建议。我知道 IDctionarys 和 Hashtables 是快速查找表,但我有三种数据类型,所以我不能做键值对。

最佳答案

如果我理解正确你的问题,解决方案是 LINQ Join方法。

var result = (from a in fileList
join s in DBResults on a.personsName equals s.personsName
select s).ToList();

或者使用扩展方法语法:

var result = fileList.Join(DBResults, a => a.personsName, s => s.personsName, (a, s) => s).ToList();

此方法速度极快,内部使用 HashSet 来提高性能。

关于c# - 比较两个列表并将匹配列保存到单独的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14693578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com