ASP.NET Web API GET方法:为单个参数传递多个值

Aym*_*n H 6 linq asp.net-mvc-4 asp.net-web-api

我是ASP.NET Web API的新手.

我正在尝试构建一个API方法,可以处理来自搜索客户端的单个参数的多个值.

标准需要是OR搜索,例如.颜色搜索红色或蓝色或绿色.

我将颜色作为整数传递给我的方法.请在下面找到我的控制器方法,该方法无法编译并出现以下错误

错误:

错误1"诠释"不包含一个定义为"包含"和最佳推广方法重载"System.Linq.ParallelEnumerable.Contains(System.Linq.ParallelQuery,TSource)"有一些无效参数

错误2实例参数:无法从'int'转换为'System.Linq.ParallelQuery'

码:

public IQueryable<Items> GetItemByColour(string Colour)
{
    int[] intArr = Array.ConvertAll(Colour.Split(','), s => int.Parse(s));

    var query = from a in db.Items
                where a.ItemsColour.Contains(intArr)
                select a;

    return query;
}
Run Code Online (Sandbox Code Playgroud)

Mer*_*ovi 4

你那里似乎有两个不同的问题。第一个是您不需要将颜色列表作为字符串发送并手动将其转换为整数数组,您可以这样做:

public IQueryable<Items> GetItemByColour([FromUri] int[] Colour)
Run Code Online (Sandbox Code Playgroud)

并且您在 LINQ 查询中收到错误,因为a.ItemColour是一个整数,而不是整数列表,因此您不能Contains对其使用扩展方法。你必须这样做(假设Colour现在是一个整数数组):

var query = from a in db.Items
            where Colour.Contains(a.ItemsColour)
            select a;

return query;
Run Code Online (Sandbox Code Playgroud)