[英]And Operation between lists of Enums
我有两个枚举列表,我想在它们之间执行和一种操作。 假设我的枚举定义包含3个元素:true,false和NA。
public enum myEnum {
True,
False,
NA
}
我有两个列表List1和List2,都包含10个元素。 我想要这些结果:
True && False = False
True && NA = NA
False && NA = False
True && True = True
False && False = False
NA && NA = NA
我想知道C#中有任何内置功能可以给我上面提到的结果。 我试图避免写长代码。
开始使用您描述的逻辑编写可以对两个值执行所需的And操作的方法。 这实际上很容易处理,就好像其中一个值为False
都返回False
,如果都不为False
且一个值为NA
返回NA
,如果两个都为true则返回true,这是唯一的情况。
public static myEnum And(this myEnum first, myEnum second)
{
if (first == myEnum.False || second == myEnum.False)
return myEnum.False;
if (first == myEnum.NA || second == myEnum.NA)
return myEnum.NA;
return myEnum.True;
}
接下来,您似乎要比较索引相同的每个列表中的项目,因此将第一个与第一个进行比较,将第二个与第二个进行比较,以此类推,以创建一个与列表大小相同的新列表。另外两个。 您可以使用Zip
,使用我们已经定义的方法执行此逻辑操作:
var query = list1.Zip(list2, (a,b) => a.And(b));
bool?
( Nullable<bool>
)具有三个值,并为您提供您期望使用逻辑和( &
)运算符的所有值:
(bool?)true & (bool?)false = false
(bool?)true & (bool?)null = null
(bool?)false & (bool?)null = false
(bool?)true & (bool?)true = true
(bool?)false & (bool?)false = false
(bool?)null & (bool?)null = null
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.