如何将数据表(1500多行)的长cloumn中的值映射到另一个大数据表(27k +行)并过滤常见行?

时间:2016-07-19 08:49:23

标签: c# linq dictionary datatable

我有两个数据表dt1dt2dt1有1500多行,dt2有27k +行。两者都有一个共同的列客户编号。我想找到两个数据表中的公共行。我的方法是将较小的数据表存储到字典中,然后使用字典[客户编号]作为LINQ查询中的映射变量来过滤较大的数据表。但我担心这可能需要太多时间。有没有更快的方法呢? 我正在使用的代码如下:

Dictionary<string, string> dict = dt.AsEnumerable().Select(dr => new { Key = 'Cust No', Value = 'Value col' }).ToDictionary(kvp => (string)kvp.Key, kvp => (string)kvp.Value);

List<string> accountNos = dict.Keys.ToList<string>();

IEnumerable<DataRow> filteredRows = dt.Rows.Cast<DataRow>().Where(r => "some condition");

filteredRows.ToList().ForEach(r => r.SetField("col name", accountNos.Any(r['Cust No'].ToString().Contains)));

0 个答案:

没有答案