将枚举值列表添加到查询参数

问题描述 投票:0回答:1

例如你有这个

enum

 public enum MyEnum
 {
     enum1,
     enum2,
     enum3,
     enum4
 }

并且您想传递

IEnumerable<MyEnum>
作为查询参数?

我试过这个:

 var queryParameters = new Dictionary<string, string>();

 var myEnums = someParemeters.MyEnums.Select(x => new KeyValuePair<string, string>(nameof(MyEnum), x.ToString()));

queryParameters.Add(nameof(SomeParemeters.MyEnums), myEnums.ToString());

if (queryParameters != null) uri = QueryHelpers.AddQueryString(uri, queryParameters);

但这当然行不通。如何获取

MyEnums
作为字符串作为查询参数 '?myEnums=enum1&myEnums=enum4' 发送?

PS:我正在使用图书馆

Microsoft.AspNetCore.WebUtilities

c# rest enums query-string
1个回答
0
投票

1 选项是将其作为逗号分隔的枚举值列表发送,这使用

System.Linq
System.Enum
:

string enumvalues = string.Join(',', 
  Enum.GetValues<MyEnum>().ToArray());

然后您可以将其添加为查询字符串值,例如:

uri + $"?myEnums={enumvalues}";

然后在客户端你可以这样做:

MyEnum[] enums = HttpContext.Request.Query["myEnums"].ToString()
  .Split(',').Select(a => Enum.Parse<MyEnum>(a)).ToArray();
© www.soinside.com 2019 - 2024. All rights reserved.