我觉得应该有办法使用lambda来检查NameValueCollection中的所有键是否都在字符串数组中。例如,假设你有:
NameValueCollection nvc; // passed in parameter
string[] requiredFields = new string[] {
"copy_ugp", "copy_ep", "copy_et", "copy_eg"
};
我希望能够做到这样的事情:
if( somelambda which is false if any item in required fields is not in nvc)
{
} else {
throw new MissingParamsException();
}
我认为应该有一个优雅的解决方案,而不必创建一个设置为true的bool,然后遍历requiredFields并在缺少密钥时将其设置为false。
答案 0 :(得分:3)
您可以使用Enumerable.Except
查找requiredFields
与NameValueCollection
中的密钥之间的差异,然后使用Enumerable.Any
,如:
if (requiredFields.Except(nvc.AllKeys).Any())
答案 1 :(得分:2)
Habib的解决方案非常好。其他方式将是
if (requiredFields.All(requiredField => collection[requiredField] != null))