1

我对现代风格的 .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 的字符串数组,我希望查询返回其 Status 等于其中任何值的对象。目前它不工作。任何人都可以帮忙吗?

4

1 回答 1

2

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

o.Status 是一个 OrderStatus 枚举

那么很可能您需要将值转换cb_orderstatus为实际的OrderStatuses 值并OrderStatus[].Contains在查询中使用

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));
}

虽然我不确定您是否会从Request.Query["OrderStatusSearch"].

无论如何,依赖标准参数绑定会好几个数量级,所以我建议你发布另一个处理的问题

我在模型类上有一个属性,它上面有 [BindProperty] 并且是 List 类型,但它没有填充任何数据。

于 2019-11-27T19:23:10.790 回答