簡體   English   中英

和枚舉列表之間的操作

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM