[英]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.