C# 如何在LINQ查询中使用从Request.Query获得的多值/数组参数(枚举值)?
对于现代风格的.NET开发和实体框架,我还是个新手。我正在尝试获取一个对象列表,其中一个值落在其他值的列表中,我正在尝试使用LINQ查询方法来实现这一点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(",");
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[]