我找不到這個的具體例子,所以我發佈的問題。任何幫助讚賞。比較兩個大的通用名單
我有兩個大的通用列表,都有超過300K項目。
我正在循環第一個列表以回收信息,併爲動態生成新列表生成一個新項目,但是我需要在第二個列表中搜索並根據三個匹配條件返回一個值,如果找到要添加到列表中,但正如你可以想象的那樣,做這個300k * 300k次需要時間。
有什麼辦法可以更有效地做到這一點?
我的代碼:
var reportList = new List<StocksHeldInCustody>();
foreach (var correctDepotHolding in correctDepotHoldings)
{
var reportLine = new StocksHeldInCustody();
reportLine.ClientNo = correctDepotHolding.ClientNo;
reportLine.Value = correctDepotHolding.ValueOfStock;
reportLine.Depot = correctDepotHolding.Depot;
reportLine.SEDOL = correctDepotHolding.StockCode;
reportLine.Units = correctDepotHolding.QuantityHeld;
reportLine.Custodian = "Unknown";
reportLine.StockName = correctDepotHolding.StockR1.Trim() + " " + correctDepotHolding.StockR2.Trim();
//Get custodian info
foreach (var ccHolding in ccHoldList)
{
if (correctDepotHolding.ClientNo != ccHolding.ClientNo) continue;
if (correctDepotHolding.Depot != ccHolding.Depot) continue;
if (correctDepotHolding.StockCode != ccHolding.StockCode) continue;
if (correctDepotHolding.QuantityHeld != ccHolding.QuantityHeld) continue;
reportLine.Custodian = ccHolding.Custodian;
break;
}
reportList.Add(reportLine);
}
在對象創建的所有瓦爾的哈希在一起,只檢查這些,它必須跑得快那麼 – EaterOfCode 2012-08-15 09:28:36
數據的來源是什麼?如果它是一個體面的數據庫,這可能會做得更好。 – 2012-08-15 09:31:19
更新了我的通用答案,詳細介紹瞭如何在linq中執行外連接 – Arkiliknam 2012-08-16 08:27:59