C# 如何检查枚举中是否存在URL中的字符串值,并在结果中将其值分配给变量?
我想检查我的urlPath WEB部分是否包含在枚举中,如果是,则在另一个变量中返回其值C# 如何检查枚举中是否存在URL中的字符串值,并在结果中将其值分配给变量?,c#,enums,C#,Enums,我想检查我的urlPath WEB部分是否包含在枚举中,如果是,则在另一个变量中返回其值 var urlPath = "SomeThing/Web"; private enum ClientTypes { Mob = 0, Web = 1 } var client = urlPath.Contains(ClientTypes.Any()) // something like this
var urlPath = "SomeThing/Web";
private enum ClientTypes
{
Mob = 0,
Web = 1
}
var client = urlPath.Contains(ClientTypes.Any()) // something like this
如何检查url中的Web部件是否存在于枚举中,并返回其值并将其分配给客户端属性?您可以基于/拆分url并与枚举名称进行比较。例如,如果您只想知道Enum是否存在,那么可以使用
var enumNames = Enum.GetNames(typeof(ClientTypes));
var result = urlPath.Split('/').Any(x=> enumNames.Contains(x));
var client = Enum.Parse(typeof(ClientTypes), urlPath.Split('/')
.FirstOrDefault(x=> enumNames.Contains(x)));
var clients = urlPath.Split('/')
.Where(x=> enumNames.Contains(x))
.Select(x=> Enum.Parse(typeof(ClientTypes),x));
如果要检索特定的枚举,则可以使用
var enumNames = Enum.GetNames(typeof(ClientTypes));
var result = urlPath.Split('/').Any(x=> enumNames.Contains(x));
var client = Enum.Parse(typeof(ClientTypes), urlPath.Split('/')
.FirstOrDefault(x=> enumNames.Contains(x)));
var clients = urlPath.Split('/')
.Where(x=> enumNames.Contains(x))
.Select(x=> Enum.Parse(typeof(ClientTypes),x));
如果存在多个事件,并且您希望检索所有事件,则可以使用
var enumNames = Enum.GetNames(typeof(ClientTypes));
var result = urlPath.Split('/').Any(x=> enumNames.Contains(x));
var client = Enum.Parse(typeof(ClientTypes), urlPath.Split('/')
.FirstOrDefault(x=> enumNames.Contains(x)));
var clients = urlPath.Split('/')
.Where(x=> enumNames.Contains(x))
.Select(x=> Enum.Parse(typeof(ClientTypes),x));
您可以基于/拆分Url,并与枚举名称进行比较。例如,如果您只想知道Enum是否存在,那么可以使用
var enumNames = Enum.GetNames(typeof(ClientTypes));
var result = urlPath.Split('/').Any(x=> enumNames.Contains(x));
var client = Enum.Parse(typeof(ClientTypes), urlPath.Split('/')
.FirstOrDefault(x=> enumNames.Contains(x)));
var clients = urlPath.Split('/')
.Where(x=> enumNames.Contains(x))
.Select(x=> Enum.Parse(typeof(ClientTypes),x));
如果要检索特定的枚举,则可以使用
var enumNames = Enum.GetNames(typeof(ClientTypes));
var result = urlPath.Split('/').Any(x=> enumNames.Contains(x));
var client = Enum.Parse(typeof(ClientTypes), urlPath.Split('/')
.FirstOrDefault(x=> enumNames.Contains(x)));
var clients = urlPath.Split('/')
.Where(x=> enumNames.Contains(x))
.Select(x=> Enum.Parse(typeof(ClientTypes),x));
如果存在多个事件,并且您希望检索所有事件,则可以使用
var enumNames = Enum.GetNames(typeof(ClientTypes));
var result = urlPath.Split('/').Any(x=> enumNames.Contains(x));
var client = Enum.Parse(typeof(ClientTypes), urlPath.Split('/')
.FirstOrDefault(x=> enumNames.Contains(x)));
var clients = urlPath.Split('/')
.Where(x=> enumNames.Contains(x))
.Select(x=> Enum.Parse(typeof(ClientTypes),x));
您可以创建一个通用方法来拆分url,并尝试将每个部分转换为枚举值。这与枚举类型无关。可以在调用此方法时定义枚举类型。正如我在注释中已经提到的,使用字符串并将字符串转换为枚举值
public IEnumerable<TEnum> TryParseUrlToEnum<TEnum>(string url) where TEnum : struct, IConvertible
{
foreach (var element in url.Split('/'))
{
if (Enum.TryParse<TEnum>(element, out TEnum enumValue))
{
yield return enumValue;
}
}
}
你可以这样称呼它:
var urlPath = "SomeThing/Web";
List<ClientTypes> enumValues = TryParseUrlToEnum<ClientTypes>(urlPath).ToList();
这还允许您分析url中的多个事件:
var urlPath = "SomeThing/Web/somethingElse/Mob";
List<ClientTypes> enumValues = TryParseUrlToEnum<ClientTypes>(urlPath).ToList();
Console.WriteLine(string.Join(Environment.NewLine, enumValues));
输出:
网
暴徒
您可以创建一个通用方法来拆分url,并尝试将每个部分转换为枚举值。这与枚举类型无关。可以在调用此方法时定义枚举类型。正如我在注释中已经提到的,使用字符串并将字符串转换为枚举值
public IEnumerable<TEnum> TryParseUrlToEnum<TEnum>(string url) where TEnum : struct, IConvertible
{
foreach (var element in url.Split('/'))
{
if (Enum.TryParse<TEnum>(element, out TEnum enumValue))
{
yield return enumValue;
}
}
}
你可以这样称呼它:
var urlPath = "SomeThing/Web";
List<ClientTypes> enumValues = TryParseUrlToEnum<ClientTypes>(urlPath).ToList();
这还允许您分析url中的多个事件:
var urlPath = "SomeThing/Web/somethingElse/Mob";
List<ClientTypes> enumValues = TryParseUrlToEnum<ClientTypes>(urlPath).ToList();
Console.WriteLine(string.Join(Environment.NewLine, enumValues));
输出:
网
暴徒
您需要解析url并使用该方法,或者更好地使用解析url并使用该方法所需的方法,或者更好地使用该方法