查找与“某人”担任相同职位的员工

时间:2019-08-12 17:35:56

标签: c# linq

我需要获取与'某人'职位相同的雇员的数据。

var context = new Models.DBService();

var job = from emp in context.EMPs
          where emp.ENAME.Equals("BLAKE")
          select emp.JOB;

var result = from emp in context.EMPs
             where emp.JOB.Equals(job)
             select emp;

实际上发生的是,从第一个查询中,我得到了使用“ BLAKE”的作业的长度,而不是作业的名称。这是我的例外:

  

System.NotSupportedException:'无法比较类型的元素   'System.Data.Entity.Core.Objects.ObjectQuery`1 [[System.String,   mscorlib,版本= 4.0.0.0,文化=中性,   PublicKeyToken = b77a5c561934e089]]。仅原始类型,枚举   类型和实体类型受支持。'

2 个答案:

答案 0 :(得分:2)

要真正从数据库中获得“工作”,您需要使用Single()之类的东西来实现查询,假设您知道查询将只得到一个结果。

var job = (from emp in context.EMPs
          where emp.ENAME.Equals("BLAKE")
          select emp.JOB).Single();

或者,您也可以将job查询和其他Contains一起使用。

var result = from emp in context.EMPs
             where job.Contains(emp.JOB)
             select emp;

请注意,此时result只是一个查询,您必须具体实现才能使用ToList或通过在foreach中进行迭代来获得员工。

答案 1 :(得分:0)

尝试这样的事情:

1º首先,您从所需的地方获得工作

2º您再次进行查询,将emp.Job与第一次查询中出现的字符串进行比较

3º完成

var job = (from emp in context.EMPs
              where emp.ENAME.ToLower() == ("BLAKE").ToLower()
              select emp.JOB).FirstOrDefault();

 var result = from emp in context.EMPs
               where emp.JOB == job
              select emp).FirstOrDefault();