我正在对我们想要验证项目属性的代码进行临时修复。它们是"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")))
{ /*...*/ }