应用标准时计算集合的最快方法

时间:2011-02-25 12:21:31

标签: .net collections dictionary count

我有一个已经从数据库中加载的字典,其中包含一个客户对象键和一个状态值,即Enum。我想要做的是计算字典中具有某种枚举类型状态的所有项目,即“已发送”。如果没有回到数据库,最好的方法是什么,或者我必须回到数据库?我真的不想循环整个系列。我目前使用.Net 2.0

无法使用linq
public Dictionary<Customer, Status> DistributionList

非常感谢提前。

2 个答案:

答案 0 :(得分:2)

你能使用lambda函数吗? e.g:

using System.Linq;

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

答案 1 :(得分:2)

如果您需要字典中具有特定值的元素计数,则无法避免在列表中循环:

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