簡體   English   中英

如何將此 SQL 查詢重寫為 LINQ 或 EF 對象查詢

[英]How to rewrite this SQL query as LINQ or EF Object Query

您將如何在 LINQ 或使用 EF 對象查詢中重寫它?

select r.UserName,  
    (select count(*) from tbl1 where UserName = r.UserName) as tbl1Count,
    (select max(CreatedDate) from tbl2 where UserName = r.UserName) as tbl2Date,
    (select max(SomeDate) from tbl3 where UserName = r.UserName) as tbl3Date,
    max(r.DateRegistered) as SomeDate           
from sometable r 
group by r.UserName

試試這個查詢

var objlist = (
    From a in Contex.UserName
    From b in Contex.tbl1.where(x=>x.UserName==a.UserName).DefaultEmpty()
    From c in Contex.tbl2.where(x=>x.UserName==a.UserName).DefaultEmpty()
    From d in Contex.tbl3.where(x=>x.UserName==a.UserName).DefaultEmpty()
    group a by a.UserName into pg       
    Select new {
        UserName = pg.UserName,tbl1count=pg.Count(x=>x.tbl1id)
        ,tbl2Date = pg.max(x=>x.CreatedDate)
        ,tbl3Date = pg.max(x=>x.SomeDate)
        ,SomeDate = pg.max(x=>x.DteRegistered)
}).ToList();

請嘗試以下代碼

StackOverflowEntities db = new StackOverflowEntities();

        var result = (from p in db.SomeTables
                     join q in db.Table_1 on p.UserName equals q.UserName into Q
                     from q in Q.DefaultIfEmpty()
                     join r in db.Table_2 on p.UserName equals r.UserName into R
                     from r in R.DefaultIfEmpty()
                     join s in db.Table_3 on p.UserName equals s.UserName into S
                     from s in R.DefaultIfEmpty()
                     group new { p, q, r, s } by p.UserName into g
                     select new
                     {
                         UserName = g.Key,
                         tbl1Count = g.Count(w => w.q != null),
                         tbl2Date = g.Max(w => w.r.CreatedDate),
                         tbl3Date = g.Max(w => w.s.SomeDate),
                         SomeDate = g.Max(w => w.p.DateRegistered)
                     }).ToList();

暫無
暫無

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

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