【问题标题】:LINQ and joining on selectsLINQ 和加入选择
【发布时间】:2010-09-07 13:47:17
【问题描述】:

我有以下 SQL:

select  o.tekst as Enhet, 
        coalesce(f.Antall,0) as AntallF, 
        coalesce(f.snitt,0) as SnittF, 
        coalesce(b.antall,0) as AntallB 
        from tblhandlingsplan hp
    inner join tblorg o on hp.eierorgid = o.orgid
    left outer join (select f.handlingsplanid, count(t.tiltakid) as Antall, coalesce(avg(convert(float,t.status)),0) as Snitt from tblhandlingsplanforbedring f left outer join tblhandlingsplantiltak t on f.forbedringsid = t.forbedringsid group by f.handlingsplanid) f on hp.handlingsplanid = f.handlingsplanid
    left outer join (select b.handlingsplanid, count(b.bevaringsid) as Antall from     tblhandlingsplanbevaring b group by b.handlingsplanid) b on hp.handlingsplanid = b.handlingsplanid
where utsendingsid = 1

这正是我想要的方式...现在我正在尝试将其转换为 LINQ...

我已经走到这一步了

from h in TblHandlingsplans
join o in TblOrgs
    on h.EierOrgID equals o.OrgID
join f in TblHandlingsplanForbedrings
    on h.HandlingsplanID equals f.HandlingsplanID into f2
join b in TblHandlingsplanBevarings
    on h.HandlingsplanID equals b.HandlingsplanID into b2
where h.UtsendingsID == 1
select new {
    Enhet = o.Tekst,
    AntallF = f2.Count(),
    AntallB = b2.Count()
}

但是现在我被困住了...我一生都无法弄清楚如何将 SQL 解决方案中的平均部分包含在内...任何接受者?

我正在考虑将整个东西推入一个 SP 并留下它......

【问题讨论】:

  • 你能创建一个简化版的 SQL 来代表你无法弄清楚的部分吗?我觉得有一个简单的答案,但这个问题有点复杂,有一堆我们不太了解的表格。
  • 当我想加入“匿名查询”时,问题就来了,这给了我“tblHandlingsplanForbedring”表中的计数和平均值。如果我不需要平均值,我会直接加入桌子,但是当我需要平均值时我不能这样做。

标签: c# sql linq join


【解决方案1】:
var query1 = from a in DB.Table1
             select new
             {
                 Id = a.Id,
                 Average = a.B.Average()
             };

var query2 = from b in DB.Table2
             join c in query1 on b.Id equals c.Id
             select c;

只是徒手画的,所以它实际上可能不起作用,但这是你想要做的事情吗?这将导致在使用 query2 时创建单个 SQL 查询。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多