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



我对现代风格的.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 等于这些值中的任何一个的对象。目前它不起作用。谁能帮忙?

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

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,但它没有填充任何数据。

最新更新