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);
}
答案 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);
}