在KeyValuePairs列表中搜索两个键



我正在对我们想要验证项目属性的代码进行临时修复。它们是"swatchImageUrl"one_answers"swatchVariantAttribute"。如果提供了其中一个,则必须提供另一个。我将在值的字典中检查这个。所以我现在的代码如下:

if((transformedValues.Any(t => t.Key.Equals("swatchImageUrl")) &&
   !transformedValues.Any(t => t.Key.Equals("swatchVariantAttribute"))) ||
   (transformedValues.Any(t => t.Key.Equals("swatchVariantAttribute")) &&
   !transformedValues.Any(t => t.Key.Equals("swatchImageUrl"))))
   {
       // throw an error here
   }

这感觉很笨拙,可能效率低下(transformmedvalues可能是一个非常大的列表,我的理解是。any()最终会枚举整个列表,如果没有),但我想不出更好的方法来做到这一点。' transformeitems '是字符串键值对的列表(所以我不能使用。containskey等)

是否有一些更好的方法来做这件事,我错过了?

以防其他人也有类似的大脑冻结。正如ASh指出的那样,更好地做到这一点的明显方法是;

if(transformedValues.Any(t => t.Key.Equals("swatchImageUrl")) != transformedValues.Any(t => t.Key.Equals("swatchVariantAttribute"))) 
{ /*...*/ }

相关内容

  • 没有找到相关文章

最新更新