在枚举中搜索字符串数组,如果可用则返回true

时间:2016-07-06 15:08:22

标签: c# arrays sorting enums

我有一个枚举:

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

现在我有一个字符串列表:

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

我希望能够为与枚举匹配的搅拌返回true。

8 个答案:

答案 0 :(得分:4)

问题很糟糕。

我想你想看看你的枚举中的值是否与参数匹配,并根据该参数返回true?

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

答案 1 :(得分:1)

你的问题真的很模糊。但我假设你的意思是这样的

var i

if (colour[0] == Enum.GetName(typeof(MyColors), 1)) //"Red" == "Red" { return true; } 正是您要找的

typeof(enumName)后跟enumIndex

答案 2 :(得分:1)

public class Nizovi {
    int[] anArray ;
    public Nizovi(){
        this.anArray = new int[10];
    }
}

希望这会有所帮助

答案 3 :(得分:1)

使用Enum.GetName(Enum,int)获取枚举字符串

答案 4 :(得分:0)

更好的答案 - 少一点:

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

答案 5 :(得分:0)

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

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

或者您可以使用该方法为loop做一个数字中的每个值。

答案 6 :(得分:0)

非常直接,为此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));

答案 7 :(得分:0)

试试这个,

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