我需要建立一個方法來增強一個CSV文件與另一個值。這種方法將需要:查找和替換2 CSV文件之間的記錄C#
- 採取「原始」的csv文件
- 從它的0列的每一行,查找一個匹配的記錄中的「增強」 CSV文件的0柱
- 如果有是匹配的,那麼對於該行,「原始」文件的列1中的記錄將被「增強」文件的列1中的對應記錄覆蓋
我正在嘗試下面的模式,這看起來可行 - 但它太慢了,我甚至無法檢查它。文件的大小不應該是個問題,因爲一個是1MB,另一個是2MB,但我肯定會採取一些錯誤的假設來有效地完成這個任務。什麼是更好的方式來做到這一點?
public static string[] LoadReadyCsv()
{
string[] scr = System.IO.File.ReadAllLines(@Path...CsvScr);
string[] aws = System.IO.File.ReadAllLines(@Path...CsvAws);
Regex CSVParser = new Regex(",(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))");
foreach (var s in scr)
{
string[] fieldsScr = CSVParser.Split(s);
foreach (var a in aws)
{
string[] fieldsAws = CSVParser.Split(a);
if (fieldsScr[0] == fieldsAws[0])
{
fieldsScr[1] = fieldsAws[1];
}
}
}
return scr;
}
編輯: 我添加下面的例子,所請求
「原始文件」
ean, skunum, prodname
111, empty, bread
222, empty, cheese
「增強文件」
ean, skunum, prodname
111, 555, foo
333, 444, foo
新的 「原始文件」
ean,skunum,prodname
111, 555, bread
222, empty, cheese
什麼你通過匹配記錄意思?覆蓋的條件是什麼 - 價值存在/更大? –
增強將基本上意味着在任何情況下「覆蓋」該記錄。 – Turo
這個複雜的正則表達式有一個原因嗎?幫助我理解你想用這個達到什麼目的。 – Steve