搜索项目的大数据集的最有效方法

时间:2015-03-10 15:38:28

标签: c# linq search dataset processing-efficiency

之前可能已经提出这个问题,但我找不到同样的情况。

我获得了一个庞大的单个字符串列的SQL数据集(即包含公司分支的城市)。

我还获得了更大的字符串主数据集(即世界上所有城市)。

第一个数据集每天都在变化。我需要每天检查一次,以检查是否可以在主数据集中找到每个字符串。

我无法控制任何数据集的设计。

我试过了:

Foreach (cityRow in dailyDS.Tables[0].Rows)
{
     DataRow[] row = masterDs.Tables[0].Select("City like '%" + (string)cityRow["City"] + "%'");
}

并使用linq(比select语句快得多)

Foreach (cityRow in dailyDS.Tables[0].Rows)
{
     DataRow existingRow = masterDs.Tables[0].AsEnumerable().Where(row => row.Field<string>("City") == (string)cityRow["City"]).FirstOrDefault();
}

我的计划的整个目标是生成一个城市列表,其中目前有一个公司分支不在主城市列表中(即,它们拼写错误等)我已编写该程序但只是想要要知道:

在这样的数据集中搜索确切值的最有效方法是什么?

1 个答案:

答案 0 :(得分:2)

如果您希望速度非常快,则必须将世界上所有城市加载到HashSet<string>

然后为每个cityOfCompany检查HashSet.Contains(cityOfCompany)

只需23k字符串即可检查,这应该在现代PC上运行几秒钟。