我想使用不同的条件进行高级搜索(过滤)。例如,如果名字可用,则查询应返回所有可用的匹配项。如果名字和姓氏均可用,则它应该与名字或姓氏相匹配,并且与许多标准(性别,专业,学历等)相类似。
这是我的控制器方法,其中所有ajax数据都作为参数。
[HttpPost]
public ActionResult Search(string cno, string fname, string lname, string male, string female, string stateid, string cityid, string professionid, string educationid)
{
if (Request.IsAjaxRequest())
{
var db = new clubDataContext();
/*----------Advanced Search Query-------------*/
return PartialView("SerachResult");
}
else
return RedirectToAction("Index", "home");
}
某些参数可能具有空值。因此,请提出最适合这种情况的LINQ查询。
您可以选择使用c#null-coalescing运算符
Users.Where(x => x.firstName == (fname??x.firstName) || x.lastName == (lname?? x.lastName)).ToList();
进一步
Users.Where(x => x.firstName.Contains(fname??x.firstName) || x.lastName.Contains(lname?? x.lastName)).ToList();
等效的SQL:
SELECT * FROM User u
WHERE u.FirstName = ISNULL(@fname,u.FirstName)
OR u.LastName = ISNULL(@lname,u.LastName)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句