6

我对 ASP.NET Web API 相当陌生。

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

条件需要是 OR 搜索,例如。红色或蓝色或绿色的颜色搜索。

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

错误:

错误 1 ​​'int' 不包含 'Contains' 的定义,并且最佳扩展方法重载 '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;
}
4

2 回答 2

4

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

public IQueryable<Items> GetItemByColour([FromUri] int[] Colour)

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

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

return query;
于 2013-07-28T15:23:23.190 回答
0

我想这将是您问题的解决方案:

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

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

    return query;
}

问题是您正在寻找 int 中是否存在数组。您需要查找数组中是否存在 int

于 2013-07-28T15:33:15.420 回答