有没有办法使用lambda表达式在NameValueCollection中查找非空值

时间:2014-10-30 20:46:59

标签: c# lambda

这个问题几乎说明了一切。我有一个NameValueCollection,其中所有值都以null开头,然后在事物移动时设置为特定值。每次设置一个值时,我需要找到集合中值为!= null的项目数。目前我正在遍历集合并计算非null值,但我想找到是否有办法通过lambda表达式更清洁。

2 个答案:

答案 0 :(得分:1)

你的意思是:

NameValueCollection collection = ...; // init as appropriate

int countOfNull = collection.Cast<string>().Where(key => collection[key] != null).Count;

在这种情况下你是如何发现自己的并不是很清楚。如果你可以使用更合适的数据结构会更好,这样知道已经填充了多少个密钥当然可以作为一个直接值(例如,在集合旁边保留一个计数器,或者只在存在时添加键/值对)价值等。)

答案 1 :(得分:1)

NameValueCollection没有实现IEnumerable<T>,但您可以使用OfType方法将Keys属性转换为IEnumerable<string>并使用{{1}方法:

Count