我有兩個充當緩存的字典,我們稱之爲d1
和d2
,其中d2
是d1
的子集。更新C#中的協調字典
當我用d1的新條目刷新字典時,我希望刷新d2中的條目。這是可以做到的明顯的方式:
foreach(var update in updates) {
d1[update.id] = update;
if(d2.Contains(update.id))
d2[update.id] = update;
}
但因爲我想緩存其他子集(D3,D4,D5,等等),這可能會非常笨重。所以我添加了一個「CopyFrom」方法到我的對象,這使我可以通過簡單地將屬性複製到正在更新的對象來維護引用。
foreach(var update in updates) {
d1[update.id].CopyFrom(update)
}
這樣,當d1
得到更新是必須的條目的引用任何其他字典不會失去它。
我只想知道我是否在這裏遺漏任何東西?我只是在休息之後回到C#,並且我明顯的把握可能會不穩定:)。
請解釋你想要達到的目標以及你需要多個字典的地方。 – VVS
基本上,我有一個非常大的字典,需要重新安排到各種「意見」。我不想對每個請求做動態的LINQ查詢(很慢),而是想緩存這些視圖。如果主字典值得到更新,我想要更新子快速存儲值。 – dcpar
對於您的意見,請使用僅包含相關鍵(不含值)的列表。通過'd1 [d2 [index]]'進行查找。 – VVS