最快的方式来计数集合,同时适用标准
问题描述:
我有一个字典,我已经加载形式的数据库,其中包含一个客户的关键和一个状态值是一个枚举。我想要做的是计算字典中具有某种枚举类型状态的所有项目,即“已发送”。在不返回数据库的情况下进行此操作的最佳方式是什么,还是必须返回数据库?我真的不想循环整个集合。我不能使用linq作为即时通讯使用.net 2.0最快的方式来计数集合,同时适用标准
public Dictionary<Customer, Status> DistributionList
非常感谢提前。
答
如果你需要的元素的计数与特定值的字典,你不能避免循环,虽然名单:
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
你必须要么写一个循环或使用LINQ 。请记住,编写循环将是最快的方法 - 无疑比查询数据库更快。 – Gabe 2011-02-25 12:32:04
好的循环,然后。谢谢。 – gdp 2011-02-25 12:43:58