You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何借助Microsoft.AspNetCore.WebUtilities传递枚举集合作为查询参数?

解决IEnumerable<枚举>作为多值查询参数传递的问题

要生成?myEnums=enum1&myEnums=enum4这种形式的查询参数,不需要用Dictionary(它不允许重复键),直接利用QueryHelpers.AddQueryString的重载方法,传入枚举值转换后的键值对集合即可:

正确代码示例

// 假设someParameters.MyEnums是IEnumerable<MyEnum>类型
var enumQueryParams = someParameters.MyEnums
    .Select(enumValue => new KeyValuePair<string, string>(
        nameof(SomeParameters.MyEnums), 
        enumValue.ToString()
    ));

// 直接将键值对集合传入,QueryHelpers会自动生成多值参数
uri = QueryHelpers.AddQueryString(uri, enumQueryParams);

原代码的问题

你之前的错误在于把整个枚举集合的ToString()结果作为单个值添加到Dictionary中,这会导致生成类似?myEnums=System.Linq.Enumerable+WhereSelectEnumerableIterator2[...]`的无效参数,而不是拆分出多个同名的参数项。

额外说明

如果需要传递枚举的数值而不是字符串名称,只需把enumValue.ToString()替换为((int)enumValue).ToString()即可:

.Select(enumValue => new KeyValuePair<string, string>(
    nameof(SomeParameters.MyEnums), 
    ((int)enumValue).ToString()
))

内容的提问来源于stack exchange,提问作者user7849697

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 19:32:39