我解析文件并将结果保存到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是快速查找表但我有三种数据类型所以我不能做一个keyvaluepair。
答案 0 :(得分:6)
如果我正确理解您的问题,解决方案就是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来提高性能。