[英]Group by linq with a long join
我試圖通過這種方法通過多次聯接來組團,但它什么也沒有回報
public List<CTarifaAplicada> get_TarifasAplicadas(int id_proforma)
{
var pt = (from ta in db.TarifaAplicada
where ta.IDProforma == id_proforma
join p in db.Proforma on ta.IDProforma equals p.ID
join pe in db.PortExpenses on ta.CodigoPE equals pe.CodigoPE
join v in db.Voucher on pe.IDVoucher equals v.No
select new CTarifaAplicada
{
CodigoFile = ta.CodigoFile,
CodigoPE = ta.CodigoPE,
Fecha = ta.Fecha,
Id = ta.Id,
IDProforma = ta.IDProforma,
ITBIS = ta.ITBIS,
Monto = ta.Monto,
DWT = p.DWT,
GRT=p.GRT,
LOA=p.LOA,
no_Voucher= v.No,
voucher=v.Description
}).ToList();
return pt;
我試圖通過這樣做來對v.No進行分組。
Json(cta.get_TarifasAplicadas(id_Proforma).OrderBy(n => n.no_Voucher).GroupBy(n => n.no_Voucher)
這什么也沒給我。 在我的網格上,我是新手
將您的方法定義為(更明智的是返回Enumerable
而不是List
):
public IEnumerable<CTarifaAplicada> get_TarifasAplicadas(int id_proforma)
{
var pt = (from ta in db.TarifaAplicada
where ta.IDProforma == id_proforma
join p in db.Proforma on ta.IDProforma equals p.ID
join pe in db.PortExpenses on ta.CodigoPE equals pe.CodigoPE
join v in db.Voucher on pe.IDVoucher equals v.No
select new CTarifaAplicada
{
CodigoFile = ta.CodigoFile,
CodigoPE = ta.CodigoPE,
Fecha = ta.Fecha,
Id = ta.Id,
IDProforma = ta.IDProforma,
ITBIS = ta.ITBIS,
Monto = ta.Monto,
DWT = p.DWT,
GRT=p.GRT,
LOA=p.LOA,
no_Voucher= v.No,
voucher=v.Description
});
return pt;
}
然后將數據分組並以匿名類型將其投影為:
var groupedData = cta.get_TarifasAplicadas(id_Proforma)
.GroupBy(n => new {n.no_Voucher, n.voucher, n.DWT, n.GRT, n.LOA, n.Fecha})
.Select(g => new
{
g.Key.no_Voucher,
g.Key.voucher,
ITBIS = g.Sum(r => r.ITBIS),
MONTO = g.Sum(r => r.Monto),
g.Key.DWT,
g.Key.GRT,
g.Key.LOA,
g.Key.Fecha
});
現在,如果您的庫允許匿名類型序列化,則可以使用groupedData
序列化為JSON
。 否則,您必須根據投影類型定義類型並使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.