如何简便检查C#中Dictionary<string,string>是否包含至少一个非空值?
无需显式循环检查字典是否存在非空值的方法
当然有更简洁的实现方式!你可以借助LINQ的Any()方法来完成这个检查,完全不用自己写foreach循环,代码可读性也更强。
实现代码
bool hasNonEmptyValue = productsDictionary.Values.Any(v => !string.IsNullOrEmpty(v));
原理说明
productsDictionary.Values会获取字典中所有值的集合,返回一个ICollection<string>类型的序列。- LINQ的
Any()方法会遍历这个序列(内部实现还是遍历,但不需要你手动写循环逻辑),只要找到第一个满足!string.IsNullOrEmpty(v)的元素,就会立即返回true——和你原来的循环逻辑效率完全一致,都是找到符合条件的元素就停止遍历。
关于ContainsValue的疑问
你提到的ContainsValue()方法确实没法直接用来实现这个需求,因为它的作用是检查字典中是否存在某个特定的具体值(比如ContainsValue("apple")是检查是否有值等于"apple"),而我们要找的是“所有非空值”这个范围的元素,没有单一的特定值可以传给它,所以这个方法在这里派不上用场。
内容的提问来源于stack exchange,提问作者Sebastian
相关产品推荐
相关产品推荐

