我正在对我们想要验证项目属性的代码进行临时修复。这些是" swatchImageUrl"和" 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
}
这感觉很笨,可能效率低下(transformedValues可能是一个非常大的列表,我的理解是.Any()最终会枚举整个列表,如果没有)但我想不出更好的方法。 ' transformedItems'是一个字符串键值对的IList(所以我不能使用.ContainsKey等。)
是否有一些更好的整洁方式,我失踪了?非常感谢任何见解。
答案 0 :(得分:0)
以防万一其他人有类似的脑风。 ASh指出,以更好的方式做到这一点的显而易见的方法是:
if(transformedValues.Any(t => t.Key.Equals("swatchImageUrl")) != transformedValues.Any(t => t.Key.Equals("swatchVariantAttribute")))
{ /*...*/ }