我試圖找到一些關於我的問題的文章,但沒有找到任何相關或對我的應用程序有意義的文章。這是我的問題:C#如何快速處理大型數據列表
我有兩個(> 20,000)項目列表。
我需要檢查每個列表中的每個項目與對面列表中的每個項目。
像這樣的東西的實現:
foreach(var item1 in List1)
{
foreach(var item2 in List2)
{
// Check item 1 against item 2.
// Check item 2 against item 1.
}
}
是因爲對於檢查所做的工作非常緩慢,無法使用。
是否有更有效的方法來處理這些需要檢查的大項目列表?
請讓我知道是否有更多的信息,我可以提供。 感謝您的任何幫助/建議。
我使用C#.NET 3.5
編輯:讓我來簡要的方式解釋了檢查。
item1和item2是路徑系統的一部分。 item1和item2由N個其他項目連接。我正在檢查item1是否連接(有效路徑)到item2,並且item2連接到item1。不能假定如果item1 - > item2,比item2 - > item1。所以兩項檢查都是必要的。
數據庫包含信息是否以及如何item1 - > item2和if/how item2 - > item1。 在支票內部,有一個命名管道調用服務來執行檢查。如果item1 - > item2等服務執行所有路徑檢查並返回。
如果存在大量數據集並且混合存在數據庫,那麼在繼續遍歷所有數據之前,是否可以在數據庫中執行一些預先過濾? – 48klocs
請提供有關列表的更多信息。這些值是否獨一無二?如果是這樣,你應該使用哈希集;框架哈希集實現具有高效的集合比較操作。 –
從邏輯上講,你正在做某種「加入」,你應該用這種方式實現它,使用內置到你的數據庫中的機制(和優化)...... –