【发布时间】:2015-10-15 16:36:18
【问题描述】:
我正在使用 ASP.NET MVC 和 EF 6。
我有一个股票页面,其中显示了有关股票项目的所有信息。现在我也想过滤记录。
在下图中,我有 3 个选项。我可能会按每个选项进行过滤,一次一个或两个或三个的组合。
我正在考虑为每个选择的选项编写 linq 查询。但是如果过滤器选项增加,这将是不可能的。有没有更好的方法。
谢谢!
这是我在控制器中所做的。(当前下拉菜单有两个选项,不包括:“-- select one--”)
public ActionResult StockLevel(string option, string batch, string name)
{
if (option != "0" && batch == "" && name == "")
{
if(option == "BelowMin")
{
List<Stock> stk = (from s in db.Stocks
where s.Qty < s.Item.AlertQty
select s).ToList();
return View(stk);
}
else
{
List<Stock> stk = (from s in db.Stocks
where s.Qty == s.InitialQty
select s).ToList();
return View(stk);
}
}
if (option == "0" && batch != "" && name == "")
{
List<Stock> stk = (from s in db.Stocks
where s.BatchNo == batch
select s).ToList();
return View(stk);
}
if (option == "0" && batch == "" && name != "")
{
List<Stock> stk = (from s in db.Stocks
where s.Item.Name.StartsWith(""+name+"")
select s).ToList();
return View(stk);
}
return View(db.Stocks.ToList());
}
【问题讨论】:
-
您是否已经尝试过任何代码?
-
是的,刚刚为这三个选项中的每一个都写了查询。但我没有写多个选项,因为我认为这不是好方法。
-
@Avi-B 我建议在这种情况下使用
SearchModel,如果您对这种方法感兴趣,请告诉我,我会为您发布答案。 -
您可以使用谓词,但在这种情况下,最好的办法是使用表达式树在填写表单元素时动态创建搜索查询。
-
使用 !string.IsNullOrWhiteSpace(batch) 而不是 batch == ""
标签: c# .net asp.net-mvc entity-framework linq