gpt4 book ai didi

c# - 为模型绑定(bind)到集合类型指定相等比较器

转载 作者:太空宇宙 更新时间:2023-11-03 19:42:18 25 4
gpt4 key购买 nike

我有一个 API,您可以在其中指定要获取的名称列表。不允许重复名称,如果两个名称仅在大小写上不同,则它们被视为重复。

GET /api/people?names=john&names=alice

在我自己的 .NET 代码中,我会使用自定义相等比较器将所有这些名称收集到 HashSet 中。

var names = new HashSet<string>(StringComparer.OrdinalIgnoreCase);

但我认为 ASP.NET Core 模型绑定(bind)不够灵活。

// GET /api/people?names=john&names=JOHN
[HttpGet("api/people")]
public GetPeople([FromQuery] HashSet<string> names)
{
// this works but names contains both john and JOHN
}

我必须更改什么才能使 names 集只包含 john 而不是 JOHN?

最佳答案

您可以使用 List<string>在方法头中,然后根据您的规则将其加载到 HashSet 中:

public GetPeople([FromQuery] List<string> names)
{
var hashed = new HashSet<string>(names, StringComparer.OrdinalIgnoreCase);
}

作为替代方案,您可以查看自定义模型绑定(bind),但只有当您在多个地方需要它时才值得付出努力。

关于c# - 为模型绑定(bind)到集合类型指定相等比较器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51609798/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com