Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否有方法使用lambda表达式在NameValueCollection中查找非空值_C#_Lambda - Fatal编程技术网

C# 是否有方法使用lambda表达式在NameValueCollection中查找非空值

C# 是否有方法使用lambda表达式在NameValueCollection中查找非空值,c#,lambda,C#,Lambda,这个问题几乎说明了一切。我有一个NameValueCollection,其中所有值都以null开头,然后随着事情的发展设置为特定值。每次设置值时,我都需要找到集合中包含该值的项数!=无效的目前,我正在遍历集合并计算非空值,但我想知道是否有办法通过lambda表达式更干净地完成这项工作 你是说: NameValueCollection collection = ...; // init as appropriate int countOfNull = collection.Cast<str

这个问题几乎说明了一切。我有一个NameValueCollection,其中所有值都以null开头,然后随着事情的发展设置为特定值。每次设置值时,我都需要找到集合中包含该值的项数!=无效的目前,我正在遍历集合并计算非空值,但我想知道是否有办法通过lambda表达式更干净地完成这项工作

你是说:

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

int countOfNull = collection.Cast<string>().Where(key => collection[key] != null).Count;
NameValueCollection集合=…;//视情况而定
int countOfNull=collection.Cast()。其中(key=>collection[key]!=null)。Count;
?


现在还不清楚你是如何在这种情况下找到自己的。如果您可以使用更合适的数据结构,以便知道已填充了多少个键自然可以作为立即值使用(例如,在集合旁边保留一个计数器,或者仅在有值时添加键/值对,等等),则会更好
NameValueCollection
不实现
IEnumerable
,但您可以使用
of type
方法和
Keys
属性将键转换为
IEnumerable
并使用
Count
方法:

int nullCount = collection.Keys.OfType<string>().Count(x => collection[x] != null);
int nullCount=collection.Keys.OfType().Count(x=>collection[x]!=null);

这对您有帮助吗
Collection.Count((i)=>i!=null?1:0)
您不应该在集合中进行线性搜索以首先计算项目。这是一个特别低效的算法。为什么一开始就有一堆空条目?
每次设置一个值/计算值的数量=null
-那么为什么不缓存该值呢?如果您知道集合从0开始,那么“每次设置一个值”,请检查设置的内容,并根据新值是否为null,选择do+=1或-=1。这样,您就可以随时掌握最新的“value!=null”统计信息,并且不必每次都扫描整个集合。@Servy是对的,但是使用@Icepickle的技术,您可以只做
collection.Count(x=>x!=null)
我真的很好奇是谁在对所有答案进行否决,而不提供理由。。。不管怎样,对于类型和类型转换,我认为盲转换更适用,因为我们知道所有键都是字符串。性能差异很小,但更多的是语义提醒。当然,没什么大不了的。我只是觉得有必要大声抱怨反对票;)我同意当前的收集类型是不合适的,但这是其中一种情况,返回并将其更改为字典或更合适的内容比当前情况带来的不便更费劲。