Linq - 2桌 - 总和

时间:2009-11-20 15:50:09

标签: linq-to-sql c#-3.0 group-by sum

Asiento     ********     Id_Asiento整数键     Fecha日期

It_Asiento
**********
Id_Asiento integer Forenkey
Importe float

我想用Linq做这个SQL查询

select Asiento.Id_Asiento, Asiento.Fecha, Sum(It_Asiento.Importe) 
From Asiento 
join It_Asiento 
on Asiento.Id_Asiento = It_Asiento.Id_Asiento
and It_Asiento.Importe > 0
group by Asiento.Id_Asiento, Asiento.Fecha

在我的DataBase引导表上有一个关系,所以在C#/ Linq上我不需要进行连接,对吧?

我试试这个,但不行吗

IQueryable listAsientos = from it_a in dc_Asientos.It_Asientos
                          where it_a.importe > 0
                          group it_a by it_a.id_asto, it_a.Asiento.fecha
                          **//¿it_a.ASiento.Fecha??????**
                          into resultado
                          select new
                          { 
                              id_asto = resultado.Key,
                              **/¿¿¿¿¿fecha = it.a.Asiento.Fecha?????**
                              suma = resultado.Sum(it => it.importe)
                          };

有人能帮助我吗? 抱歉,我的英语很差。

2 个答案:

答案 0 :(得分:0)

不是resultado一个It_Asientos对象吗?所以你应该使用

id_asto = resultado.Key.Id_asto,
fecha = resultado.Key.fecha

答案 1 :(得分:0)

以下查询可以解决您的问题

IQueryable listAsientos = from it_a in dc_Asientos.It_Asientos
                      where it_a.importe > 0
                      group it_a by new { it_a.id_asto, it_a.Asiento.fecha }
                      into resultado
                      select new
                      { 
                          id_asto = resultado.Key.id_asto,
                          suma = resultado.Sum(it => it.importe)
                      };