Jt2*_*uan 3 c# linq lookup list
我解析文件并将结果保存到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();
Run Code Online (Sandbox Code Playgroud)
如果你认为你可能有更快的方法,我也会接受其他建议.我知道IDctionarys和Hashtables是快速查找表,但我有三种数据类型,所以我不能做一个keyvaluepair.
如果我正确理解你的问题,那么解决方案就是LINQ Join方法.
var result = (from a in fileList
join s in DBResults on a.personsName equals s.personsName
select s).ToList();
Run Code Online (Sandbox Code Playgroud)
或者使用扩展方法语法:
var result = fileList.Join(DBResults, a => a.personsName, s => s.personsName, (a, s) => s).ToList();
Run Code Online (Sandbox Code Playgroud)
此方法非常快,并在内部使用HashSet来提高性能.