我正在使用MVC,我正试图通过两个下拉列表来过滤数据。
我有一个工作,只是不知道让第二个工作的逻辑
这是我的代码:
控制器:
public ActionResult Index(int? DepartmentID, int? JobTitleID)
{
DepartmentDropDownList();
JobDropDownList();
var employees = db.Employees.Include(e => e.Department).Include(e => e.JobTitle);
if (DepartmentID.HasValue || JobTitleID.HasValue)
{
employees = employees.Where(j => j.JobTitleID == JobTitleID);
//somehow filter departments here
}
return View(employees.ToList());
}
查看:
@model IEnumerable<josh_MVC_Company.Models.Employee>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
@using (Html.BeginForm())
{
<p> Select by Department: @Html.DropDownList("DepartmentID", "Departments") </p>
<p> Select by Job Title: @Html.DropDownList("JobTitleID","Job Titles") </p>
<input type="submit" value="Filter" />
}
答案 0 :(得分:1)
在实现LINQ查询(ToList()
)之前,您必须按两个字段进行过滤。
if (JobTitleID.HasValue)
{
employees = employees.Where(j => j.JobTitleID == JobTitleID.Value);
}
if (DepartmentID.HasValue)
{
employees = employees.Where(j => j.DepartmentID == DepartmentID.Value);
}
return View(employees.ToList());
这样,如果没有任何值,则根本不会对其进行过滤。
(如您所见,您可以根据需要链接尽可能多的Where(Expression<Func<T,bool>>)
)