2010-08-06 44 views
2

我知道它在SO上多次提出的一個常見問題。但無論如何幫助我。其實我必須從本地機器上傳數據到遠程sql數據庫。遠程sql數據庫有一個表格,其中有800,000條記錄。現在我從這裏開始在我的系統中有大約1,21311個記錄,從遠程數據庫中已經有75%的記錄存在,但是我們完全不知道記錄是什麼。我們正在使用名爲DCNNumber的唯一代碼檢查我們的電話號碼。如果服務器上存在DCN,則排除其他插入。從通用列表中過濾記錄<string>

所以,我所做的就是我使用數據集從遠程數據庫將所有DCN收集到XML中。僅XML就成爲一個24MB文件。從我的本地文本文件中,我解析了一個1.2拉的記錄到通用列表。 XML DCN也添加到字符串的通用列表中。然後使用if(!lstODCN.Contains(DCNFromXML)){lstNewDCN.Add(item)}來比較這兩個列表;

但是這段代碼需要將近一個小時才能執行和過濾記錄。所以我需要一些最佳的方式來過濾如此龐大的數字。

回答

2

將所有結果加載到HashSet<string> - 這將是太多檢查遏制更快。

這有可能是LINQ也將讓這個簡單,但我有點困惑,到底發生了什麼......我懷疑你可以使用:

var newDCNs = xmlDCNs.Except(oldDCNs); 
1

除了喬恩的答案:使用XML數據集從服務器傳輸數據可能是個壞主意,因爲XML是一種非常冗長的格式。使用平面文件格式+壓縮會更有效率。