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