[英]How to rewrite this SQL query as LINQ or EF Object Query
How would you rewrite this in LINQ or using an 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
Try this query试试这个查询
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();
Please Try the following code请尝试以下代码
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.