0
我有兩本詞典,我想在一個單獨的字典中加入並保存匹配指數像這樣:LINQ加入上非常大的字典/內存溢出異常
public class MatchedPairs
{
public List<int> index1;
public List<int> index2;
public MatchedPairs()
{
this.index1 = new List<int>();
this.index2 = new List<int>();
}
}
Dictionary<int, string> file1Dictionary = new Dictionary<int, string>();
Dictionary<int, string> file2Dictionary = new Dictionary<int, string>();
//Fill dictionaries with data from flat files
//...
var matchedKeys = file1Dictionary.Join(file2Dictionary, x => x.Value, y => y.Value, (x, y) => new { k1 = x.Key, k2 = y.Key });
Dictionary<int, MatchedPairs> matches = new Dictionary<int, MatchedPairs>();
foreach (var match in matchedKeys)
{
matches.index1.Add(match.k1);
matches.index2.Add(match.k2);
}
我收到
內存溢出異常
執行該代碼時,因爲file1Dictionary
和file2Dictionary
對象都有數以百萬計的條目在他們中。
有什麼我可以做的,以便能夠匹配內存中的這些大對象/在C#中。我的替代方案是將數據加載到SQL數據庫中並在那裏進行加入。謝謝。
如果你可以在數據庫中做到這一點,這是最好的選擇。 –
你是否將其作爲64位應用運行? – Enigmativity
其實,你能把字典加載到內存中嗎?它是否引發了內存不足異常? – Enigmativity