从通用列表<string> </string>过滤记录

时间:2010-08-06 09:33:45

标签: c# generics list

我知道这是一个常见的问题。但无论如何帮助我。实际上我必须将数据从本地机器上传到远程sql数据库。远程sql数据库有一个表,其中有800,000条记录。现在从这里我在我的系统本地有大约1,21311条记录,其中75%的记录已存在于远程数据库中,但我们完全不知道哪些记录。我们使用名为DCNNumber的唯一代码检查我们的号码。如果服务器上存在DCN,则排除else插入。

所以我这样做是因为我使用数据集从远程数据库收集了所有DCN到XML。仅XML就成了一个24mb的文件。从我的本地文本文件中,我将1.2 lacs的记录解析为Generic List。 XML DCN也被添加到字符串的通用列表中。

然后使用if(!lstODCN.Contains(DCNFromXML)){lstNewDCN.Add(item)};

比较这两个列表。

但是这段代码花了将近一个小时来执行和过滤记录。所以我需要一些最佳的方法来过滤这么大的数字。

2 个答案:

答案 0 :(得分:1)

将所有结果加载到HashSet<string> - 在检查收容时会更快

LINQ也可能会让这个变得更简单,但我对于发生了什么事情感到有些困惑......我怀疑你可以使用:

var newDCNs = xmlDCNs.Except(oldDCNs);

答案 1 :(得分:0)

除了Jon的回答:使用XML数据集从服务器传输数据可能是一个坏主意,因为XML是一种非常冗长的格式。使用平面文件格式+压缩会更有效率。