动态组成linq查询的方法
现在view中有三个dropdownlist供用户选择部门department,状态status,工种worktype查询出复合条件的人。用户可能选择其中一个或多个条件查询。
需要在controller里接收这三个参数,组成一句linq查出用户想选的人员,如何实现。
sql的话就比较简单
如果三个参数全空就
string sqlcmd=select * from users ;
如果不是全空,则
String sqlcmd=select * from users where
之后判定不为空的参数append到string后面组成sql语句。
linq的话不知道有没有简便的方法实现此功能。
------解决方案--------------------public void Test(string department, string status, string worktype)
{
QueryContext query = new QueryContext();
var q = from u in query.Users
select u;
if (!string.IsNullOrEmpty(department))
{
q = q.Where(p => p.department== department);
}
if (!string.IsNullOrEmpty(status))
{
q = q.Where(p => p.status == status);
}
if (!string.IsNullOrEmpty(worktype))
{
q = q.Where(p => p.worktype== worktype);
}
q.ToList(); //上边的所有if,只有到此处才会执行
}