如何在Web API查询字符串中将多个参数作为OR处理?

Den*_*ail 2 c# .net-4.5 asp.net-web-api

假设我有这个URL:

api.XXX.com/cities?risk=a,b&rating=x,y
Run Code Online (Sandbox Code Playgroud)

我想要的是风险类别为A或B且评级为X或Y的城市列表.我应该如何实施?

我知道我可以获得风险和评级键的值,但接着是什么?是否最好简单地解析字符串并使用switch语句?还是有更好的方法?

Str*_*ior 5

更标准的方法是:

api.XXX.com/cities?risks=a&risks=b&ratings=x&ratings=y
Run Code Online (Sandbox Code Playgroud)

这可以由控制器动作处理,如下所示:

[HttpGet]
public async Task<IHttpActionResult> SearchCities(
    List<string> risks,
    List<string> ratings)
{
    var results = this.dbContext.Cities.AsQueryable();
    if(risks.Any()) 
    {
        results = results.Where(c => c.Risks.Any(cr => risks.Contains(cr.Code));
    }
    if(ratings.Any())
    {
        results = results.Where(c => ratings.Contains(c.Rating));
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

类似的答案在这里.