簡體   English   中英

LINQ查詢表達式中的子查詢

[英]subquery in LINQ query expression

下面是我的SQL查詢:

select e.id, m.id, e.Name, (select 1 where e.Id Is Null) as NotExists
    from    Employee e 
            INNER JOIN Department d
            ON e.Id = d.Id  
            LEFT JOIN Manager m
            ON e.Id = m.Id
            order by e.Name

我試圖像上面這樣將上面的查詢寫到LINQ中:

var result = from e in employeeRep
             join d in departmentRep
             on e.Id equals d.Id
             join m in manager
             on e.Id = m.Id
             order by e.Name
             select new
             {
               Name = e.Name,
               EmpId = e.Id,
               ManagerId = m.Id,
               DepartmentId = d.Id,
               DeparmentName = d.Name,
               NotExists = // here I want to write this query (select 1 where e.Id Is Null) as NotExists
             } ;

誰能告訴我如何實現這一目標

謝謝

如果Id nullablenullable則可以執行以下操作:

select new
             {
               Name = e.Name,
               EmpId = e.Id,
               ManagerId = m.Id,
               DepartmentId = d.Id,
               DeparmentName = d.Name,
               NotExists = e.Id == null ? 1 : 0 

            }

您可以使用let關鍵字。 它允許您創建一個子查詢,為其分配一個名稱,然后在以后的代碼中使用它們。 雖然,它在許多復雜的子查詢中更有用,在這里也可以使用。

var result = from e in employeeRep
         join d in departmentRep
         on e.Id equals d.Id
         join m in manager
         on e.Id = m.Id
         order by e.Name
         let mySub = // write your query here.
         select new
         {
           Name = e.Name,
           EmpId = e.Id,
           ManagerId = m.Id,
           DepartmentId = d.Id,
           DeparmentName = d.Name,
           NotExists = mySub
         };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM