Преобразование подзапроса SQL в LINQ - PullRequest
0 голосов
/ 01 июля 2018

Я новичок в LINQ и пытаюсь преобразовать подзапрос SQL в lINQ. Можем ли мы написать подзапросы, такие как SQL, в LINQ?

вот база

Table EMP                                                                                                  
Name       Null?         Type

EMPNO      NOT NULL      NUMBER(4)
NAME                    VARCHAR2(10)
JOB                     VARCHAR2(9)
MGR                     NUMBER(4)
HIREDATE                DATE
SAL                     NUMBER(7,2)
COMM                    NUMBER(7,2)
DEPTNO                  NUMBER(2)


Table Dpt
Name        Null?        Type
DEPTNO      NOT NULL NUMBER(2)
DNAME                VARCHAR2(14)
LOC                  VARCHAR2(13)

Вот SQL-запрос

SELECT *
FROM emp
WHERE deptno IN (SELECT deptno
                 FROM dept
                 WHERE dname = 'RESEARCH');

Вот мое усилие:

var r = (from query in conn.EMPs
         where (query.DEPTNO == (from q in conn.DEPTs 
                                 where q.DNAME == "RESERCH"
                                 select q.DEPTNO)) 
         select new
         {
          query
         }).ToList();

Ответы [ 2 ]

0 голосов
/ 11 июля 2018

var DepartmentNos = dept.Where (dpt => dpt.dname == 'RESEARCH'). Выберите (dptNo => dptNo.deptno);

var сотрудники = emp.Where (e => DepartmentNos.Contains (e.deptno));

сотрудников является окончательным результатом.

0 голосов
/ 01 июля 2018

Мне нравится использовать соединения:

var r = (from query in conn.EMPs
        join q in conn.DEPTs on query.deptno equals q.DEPTNO 
        select new { query = query, q = q})
        .Where(x => x.q.DNAME == "RESEARCH")
        .ToList();
...