繁体   English   中英

如何在实体框架的一列中使用具有不同数据的where子句?

[英]How to use where clause with different data in one column in entity framework?

public ActionResult Index()
   {
     var results = db.Employee
        .Where(d => d.JOBID == "Tester" 
            && d.JOBID == "Developer" 
            && d.Salary =="2000")
        .ToList();

     return View(results);
  }

结果

姓名 职位 薪水

  1. 约翰测试仪 4000
  2. 欢乐开发者2000

如果您想应用从同一列中选择两个值,您最好使用OR运算符,这将列出他们的薪水正好为 2000 的测试人员或开发人员

public ActionResult Index()
   {
     var results = db.Employee
        .Where(d => 
                    (d.JOBID == "Tester" || d.JOBID == "Developer") && 
                    d.Salary =="2000")
        .ToList();

     return View(results);
  }

如果要基于多个值从一列中对 select 使用 Where 子句,请先将要查找的值放入列表中:

var jobIdList = new List<string>();

jobIdList.Add("Tester");
jobIdList.Add("Developer");

现在您可以使用Contains子句查询在该列表中有值的任何结果。

 var results = db.Employee
    .Where(d => (jobIdList.Contains(d.JOBID) 
        && d.Salary =="2000"))
    .ToList();

这样,您的查询始终以相同的方式工作,但您可以通过更改jobIdList中的值来更改获得的结果。 想要包括经理? jobIdList.Add("Manager"); ,然后再次运行您的查询。 现在您想删除开发人员并只取回测试人员和经理? jobIdList.Remove("Developer") ,然后运行您的查询并获得新结果。 这使您的查询方法更加灵活。 现在,您可以取回 JOBID 在列表中且薪水 = 2000 的任何员工。(您可能会查看该薪水值,硬编码可能并不理想。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM