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

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.

Céd*_*non 6

如果我正确理解你的问题,那么解决方案就是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来提高性能.