3

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

清单 1. 清单文件清单包含以下数据类型:字符串 personName

清单 2. 列出 DBresults 包含以下数据类型:字符串 personName、字符串地址、字符串 phoneNumber

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

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

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

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

4

1 回答 1

6

如果我正确理解您的问题,则解决方案是 LINQJoin方法。

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 来提高性能。

于 2013-02-04T19:02:03.127 回答