LINQ查询中的高级搜索

索拉布·加达里亚(Saurabh Gadariya)

我想使用不同的条件进行高级搜索(过滤)。例如,如果名字可用,则查询应返回所有可用的匹配项。如果名字和姓氏均可用,则它应该与名字或姓氏相匹配,并且与许多标准(性别,专业,学历等)相类似。

这是我的控制器方法,其中所有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查询。

RollerCosta

您可以选择使用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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章