首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有长连接的linq组

具有长连接的linq组
EN

Stack Overflow用户
提问于 2013-12-02 13:06:01
回答 1查看 104关注 0票数 1

我试图在此方法中使用多个联接来完成一个goup,但它没有返回任何内容。

代码语言:javascript
复制
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分组,通过这样做。

代码语言:javascript
复制
Json(cta.get_TarifasAplicadas(id_Proforma).OrderBy(n => n.no_Voucher).GroupBy(n => n.no_Voucher)

这回我什么也不回。在我的网格上,我是新手

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-02 14:29:48

将您的方法定义为(返回Enumerable而不是List更明智):

代码语言:javascript
复制
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;
}

然后将数据分组,并将其作为匿名类型进行投影,如下所示:

代码语言:javascript
复制
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。否则,必须根据投影类型定义类型并使用它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20329087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档