最快的方式来计数集合,同时适用标准

问题描述:

我有一个字典,我已经加载形式的数据库,其中包含一个客户的关键和一个状态值是一个枚举。我想要做的是计算字典中具有某种枚举类型状态的所有项目,即“已发送”。在不返回数据库的情况下进行此操作的最佳方式是什么,还是必须返回数据库?我真的不想循环整个集合。我不能使用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

如果你需要的元素的计数与特定值的字典,你不能避免循环,虽然名单:

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

您可以使用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