比较两个列表并将匹配的列保存到一个单独的列表中

本文关键字:列表 保存 单独 一个 两个 比较 | 更新日期: 2023-09-27 17:57:27

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

列表1。列表文件列表包含以下数据类型:string personsName

列表2。List 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来提高性能。