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