比較快的方式搜索字符串中的一個大的CSV文件C#
- 一個DataTable(列ACCID和TerrName),其中包含超過2000行。
- 包含超過6百萬條記錄的大型csv文件(列爲AccId和External_ID)。
現在,我需要匹配AccId並且必須從csv文件中找到其對應的External_ID。
目前我使用下面的代碼實現它:
DataTable tblATL = Util.GetTable("ATL", false);
tblATL.Columns.Add("External_ID");
DataTable tbl = Util.CsvToTable("TT.csv", true);
foreach (DataRow columnRow in tblATL.Rows)
{
var query = tbl.Rows.Cast<DataRow>().FirstOrDefault(x => x.Field<string>("AccId") == columnRow["AccId"].ToString());
if (query != null)
{
columnRow["External_ID"] = query.Field<string>("External_ID");
}
else
{
columnRow["External_ID"] = "New";
}
}
此代碼工作很好,但唯一的問題是性能問題,其採取非常非常長的時間才能得到結果。
請幫忙。我該如何改進其性能,您有其他方法嗎?
你能舉出csv文件的示例頭文件嗎?例如字段名稱,它們的順序/類型等(在內存中保存6M記錄將總是較慢) – BugFinder
如果將整個csv文件加載到內存中,PLinq始終是一個選項。 – Sidewinder94
@BugFinder:所有列都是沒有特定順序的字符串類型。 AccId,External_ID 001P000000eHknBIAS,303363IN 001U000001bU0Q6IAK,303063IN – Avijit