2013-02-04 142 views
2

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

清单1.列出的fileList包含的数据类型:字符串personsName

清单2.列出DBRESULTS包含的数据类型:字符串personsName,字符串的地址,字符串phoneNumber的

试图列表1比较表2找匹配,然后将结果发送到另一个列表以写入输出。 他们可能是列表2中每个人的多个结果,所以我需要找到每个实例。

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

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

我也接受其他建议,如果你认为你可能有一个更快的方法。我知道IDctionarys和哈希表是快速查找表,但我有三个数据类型,所以我不能做一个keyvaluepair。

回答

5

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

+1

感谢您提供了两种语法,我不知道整个“(a,s)=> s”语法,这是很好的信息。 –

相关问题