2010-05-11 41 views
1

我有〜10,000條記錄希望保留在內存中的一個集合,並對它執行LINQ查詢。該集合應該適用於應用程序域中的所有用戶,並且可以同時訪問。我正在尋找支持多線程的.NET集合,可以異步有效地查詢,而不會出現任何線程問題。任何建議爲此決定一個集合?最適合多線程請求的集合?

對不起 - 只是閱讀,沒有更新。它不應該在.NET 4.0中

回答

4

你需要更新它嗎?如果不是,任何常見的嫌疑人(例如List<T>或數組)都應該沒問題。如果有一個你想查找的自然鍵,你可能需要使用字典,但如果它真的只是一個集合,那麼列表應該沒問題。

編輯:它看起來像這個答案的其餘部分是不相關的這個特定的問題,但我會留在這裏爲其他人稍微不同的要求。

如果需要更新它 - 如果你能使用.NET 4 - 你至少應該考慮ConcurrentBag。請記住它是無序的,並且如果您迭代它並同時修改包,則不會看到更改(根據the docs,它是快照),但如果沒關係,那很可能是您之後的內容。

如果這樣做並不完全符合您的要求,請參閱System.Collections.Concurrent namespace中的其他集合 - 同樣,這一切都適用於.NET 4.