C# 如何在LINQ查询中使用从Request.Query获得的多值/数组参数(枚举值)?

C# 如何在LINQ查询中使用从Request.Query获得的多值/数组参数(枚举值)?,c#,asp.net,entity-framework,linq,C#,Asp.net,Entity Framework,Linq,对于现代风格的.NET开发和实体框架,我还是个新手。我正在尝试获取一个对象列表,其中一个值落在其他值的列表中,我正在尝试使用LINQ查询方法来实现这一点 string cb_orderstatus = Request.Query["OrderStatusSearch"].ToString(); if (!string.IsNullOrEmpty(cb_orderstatus)) { string[] orderStatuses = cb_orderstatus.Split(",");

对于现代风格的.NET开发和实体框架,我还是个新手。我正在尝试获取一个对象列表,其中一个值落在其他值的列表中,我正在尝试使用LINQ查询方法来实现这一点

string cb_orderstatus = Request.Query["OrderStatusSearch"].ToString();
if (!string.IsNullOrEmpty(cb_orderstatus))
{
    string[] orderStatuses = cb_orderstatus.Split(",");
    query = query.Where(o => orderStatuses.Contains(o.Status.ToString()));
}

如果cb_orderstatus的值是一个包含5、10和15的字符串数组,我希望查询返回其状态等于这些值中任何一个的对象。目前它不工作。有人能帮忙吗?

这是一个有根据的猜测,但正如你所说

o、 Status是OrderStatus枚举

然后很可能需要将值从
cb_orderstatus
转换为实际的
orderstatus
es值,并在查询中使用
orderstatus[]

string cb_orderstatus = Request.Query["OrderStatusSearch"].ToString();
if (!string.IsNullOrEmpty(cb_orderstatus))
{
    var orderStatuses = cb_orderstatus
        .Split(",")
        .Select(statusIntegerString => 
            (OrderStatus)int.Parse(statusIntegerString))
        .ToArray();
    query = query.Where(o => orderStatuses.Contains(o.Status));
}
虽然我不确定您是否会从
请求.Query[“OrderStatusSearch”]
中获得逗号分隔的值

在任何情况下,依赖标准参数都会好上几个数量级,所以我建议您发布另一个关于标准参数的问题

我在模型类上有一个属性,该属性上有[BindProperty],类型为List,但没有填充任何数据


什么是
o.Status
?什么是
query
?还有,什么是不工作?它是否抛出异常、返回什么类型的异常或结果?您的代码在逻辑上似乎是正确的。我有根据地猜测,
o.Status.ToString()
的结果不是您期望的结果,或者如果是,则字符串比较有问题。如果
Request.Query[“OrderStatusSearch”]
是一个数组,则
ToString
的结果不会是一个逗号分隔的值列表。对于
int[]