LINQ CSV数据库 - 快速方式除外

时间:2011-09-27 09:39:41

标签: c# linq csv

我有一对CSV文件。

CSV1: 选项编号,产品编号,产品名称

CSV2: 产品编号,产品详细信息,产品详细信息

记录数量非常多,文件数量(每周生成的对数)也非常高。

CSV2将包含部分产品详细信息,并手动输入产品详细信息。

我怎样才能: 1.Re生成CSV1,使其仅具有CSV2中不存在详细信息的产品的产品编号(和选项和名称)

从代码项目中尝试LINQ to CSV,能够正确读/写 但是EXCEPT部分需要花费很多时间。

var query =    
    from c in dc.Customers    
    where !(from o in dc.Orders    
            select o.CustomerID)    
           .Contains(c.CustomerID)    
    select c;

这是等效的,但仍然太慢。

如何修剪使用查询检索到的所有字段。 如果我要将类型设置为int - 产品编号。 这应该有所帮助。请提供您的反馈。我可以提供代码。 但它主要基于codeproject的LINQTOCSV。

2 个答案:

答案 0 :(得分:0)

您可以在hashset中加载CSV2中的产品编号,然后您的where子句可能会变为:

  where !hashSet.Contains(productID)

哪种表现应该更好(O(1))

答案 1 :(得分:0)

两个文件中的产品选择字典,其中键是产品编号,然后比较,它会更快。