2011-02-25 26 views
0

我有一個字典,我已經加載形式的數據庫,其中包含一個客戶的關鍵和一個狀態值是一個枚舉。我想要做的是計算字典中具有某種枚舉類型狀態的所有項目,即「已發送」。在不返回數據庫的情況下進行此操作的最佳方式是什麼,還是必須返回數據庫?我真的不想循環整個集合。我不能使用linq作爲即時通訊使用.net 2.0最快的方式來計數集合,同時適用標準

public Dictionary<Customer, Status> DistributionList 

非常感謝提前。

+0

你必須要麼寫一個循環或使用LINQ 。請記住,編寫循環將是最快的方法 - 無疑比查詢數據庫更快。 – Gabe 2011-02-25 12:32:04

+0

好的循環,然後。謝謝。 – gdp 2011-02-25 12:43:58

回答

2

如果你需要的元素的計數與特定值的字典,你不能避免循環,雖然名單:

int count = 0; 
foreach(KeyValuePair<Customer,Status> kvp in DistributionList) { 
    if(kvp.Value == Status.Sent) count++; 
} 
2

您可以使用lambda函數嗎?例如:

using System.Linq; 

int sentCount = DistributionList.Values.Count(s => s.Status == sent); 
+0

嗨,喬恩,不能使用linq,如我的問題所述。 – gdp 2011-02-25 12:43:06

+0

糟糕公平點!在這種情況下,我可能會通過循環DistributionList.Values來簡化fencliff和bif的答案,因爲這些是狀態,而不是在KVP上循環。 – 2011-02-25 21:12:11