C# LINQ和选择上的连接

C# LINQ和选择上的连接,c#,sql,linq,join,C#,Sql,Linq,Join,我有以下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

我有以下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里,然后就这样

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查询。

您能否创建一个简化版本的SQL,只表示您无法理解的部分?我觉得答案很简单,但问题有点复杂,因为有一大堆我们不太了解的表。当我想加入“匿名查询”时,问题就出现了,该查询提供了“TBLHandlingsPlanForEdring”表中的计数和平均数。如果我不需要平均值,我会直接加入到表中,但当我需要平均值时,我不能这样做。