在Asp.net(实体框架)中使用多个搜索框进行多个搜索

时间:2018-11-23 20:07:14

标签: asp.net-mvc

Image我在开发一种可以通过多个搜索框搜索的表单时遇到问题.....当我尝试一起搜索名称和电子邮件时,ActionResult ...编译器说这两个linq查询不能与&&运算符一起应用。我不知道为什么...


[HttpPost]
public ActionResult Login(string search,string search2)
{
     var obj = db.Emps.Where(x => x.Employee_name.StartsWith(search)) && db.Emps.Where(x=>x.Employee_email.StartsWith(search2));
     return View(obj);
}

2 个答案:

答案 0 :(得分:0)

如果您查看当前代码,则第一部分db.Emps.Where(x => x.Employee_name.StartsWith(search))将返回集合IQueryable<Emp> 表达式的第二部分也将返回相同的类型IQueryable<Emp>

因此,您的代码基本上是在尝试执行/编译表达式IQueryable<Emp> && IQueryable<Emp>,并且由于它无效,因此编译器告诉您它无效。

理想情况下,您应该在相同的Where方法中包含两个WHERE条件谓词。

var obj = db.Emps.Where(x => x.Employee_name.StartsWith(search) 
                          && x.Employee_email.StartsWith(search2));

请记住,变量obj仍然是类型IQueryable<Emp>。如果要执行LINQ查询,可以调用ToList()方法。

List<Emp> = db.Emps.Where(x => x.Employee_name.StartsWith(search) 
                            && x.Employee_email.StartsWith(search2)).ToList();

如果进行了上述更改,请确保将视图的类型严格设置为List<Emp>,而不是IQueryable

答案 1 :(得分:0)

您需要在单个Where内同时使用这两种条件

[HttpPost]
public ActionResult Login(string search,string search2)
{
     var obj = db.Emps.Where(x => x.Employee_name.StartsWith(search) && x.Employee_email.StartsWith(search2));
     return View(obj);
}