簡體   English   中英

在枚舉中搜索字符串數組,如果可用,則返回true

[英]search array of strings in an enum and return true if available

我有一個枚舉:

    [Flags]
    public enum MyColours{
    Red = 1,
    Green = 2, 
    Blue = 4,
    Yellow = 8,
    Orange = 16,
    };

現在我有一個字符串列表:

    string[] colour = new string { "Red", "Orange", "Blue"};

我希望能夠為與枚舉匹配的標准返回true。

這個問題。

我想您想查看枚舉中的值是否與參數匹配,並根據該參數返回true?

bool IsInsideEnum(string value) {
  foreach (var enumVal in Enum.GetValues(typeof(MyColors)) 
    if(Enum.GetName(typeof(MyColors), enumVal) == value) 
      return true;
  return false;
}

你的問題真的很模糊。 但是我假設你的意思是這樣的

if (colour[0] == Enum.GetName(typeof(MyColors), 1)) //"Red" == "Red"
{
   return true;
}

Enum.GetName(typeof(MyColors), 1)是您要尋找的

typeof(enumName)后跟enumIndex

   List<string> colour = new List<String>{ "Red", "Orange", "Blue" };
   List<string> enumColors = Enum.GetNames(typeof(MyColours)).ToList();
   foreach (string s in enumColors)
   {
          if (colour.Exists(e => e == s))
              return true;
          else
              return false;

   }

希望這可以幫助

使用Enum.GetName(Enum,int)獲得枚舉的字符串

更好的答案-更少詳細信息:

var values = Enum.GetNames(typeof(MyColours)).ToList();

string[] colour = new string[] { "Red", "Orange", "Blue" };

List<string> colourList = colours.ToList();

ConatainsAllItems(values, colourList);

public static bool ContainsAllItems(List<T> a, List<T> b)
{
    return !b.Except(a).Any();
}

如果它們具有匹配的值,則應返回true

您可以使用Enum.TryParse方法,如下所示:

MyColours c;
from s in colour select new {Value = s, IsAvailable = Enum.TryParse(s, true, out c)}

或者,您可以執行loop並使用該方法為數組中的每個值找出該值。

十分直接,將Enum.IsDefined為此:

   string[] colour = new string[] { "Red", "Orange", "Blue", "White" };

   var result = colour
     .Select(c => Enum.IsDefined(typeof(MyColours), c));

測試

  // True, True, True, False
  Console.Write(String.Join(", ", result));

嘗試這個,

foreach(string s in colour)
       { 
           Enum.GetNames(typeof(MyColours)).Contains(s); 
       }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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