Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 由linq进行分组并进行长连接_C#_Linq_Lambda - Fatal编程技术网

C# 由linq进行分组并进行长连接

C# 由linq进行分组并进行长连接,c#,linq,lambda,C#,Linq,Lambda,我试图在这个方法中使用多重连接生成一个goup by,但它没有返回任何结果 public List<CTarifaAplicada> get_TarifasAplicadas(int id_proforma) { var pt = (from ta in db.TarifaAplicada where ta.IDProforma == id_proforma

我试图在这个方法中使用多重连接生成一个goup by,但它没有返回任何结果

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;
这对我来说毫无回报。在我的网格中,Im新手将您的方法定义为(返回
可枚举的
而不是
列表
更明智):


现在,如果lib允许匿名类型序列化,则可以使用
groupedData
将其序列化为
JSON
。否则,必须根据投影类型定义类型并使用它

请注意,您的查询只是一个延迟执行的查询,您必须在使用结果绑定到网格之前执行它。此外,GroupBy结果将没有属性,因此如何在网格上显示该结果?
GroupBy
返回
IEnumerable
。是否需要在网格中查看
i分组
?您必须将其投影到适当的类型。我想显示以下内容:CodigoFile、CodigoPE、Fecha、Id、IDProforma、ITBIS、Monto、DWT、,GRT,LOA,no_凭证,凭证但按no_凭证分组,我是在SQL上获得的,但我不知道如何在linq中执行,我不想使用过程。您可以共享分组SQL查询吗?这是我的SQL分组查询::选择v.否,v.说明,SUM(ta.ITBIS)作为ITBIS,SUM(ta.Monto)作为Monto,p.DWT,p.GRT,p.LOA,ta.Fecha来自Tarifapplicada ta加入形式p on p.ID=ta.IDProforma加入端口费用pe on ta.CodigoPE=pe.CodigoPE加入凭证v on v.No=pe.IDProforma=33按v.No,v.Description,p.DWT,p.GRT,p.LOA,ta.Fecha
Json(cta.get_TarifasAplicadas(id_Proforma).OrderBy(n => n.no_Voucher).GroupBy(n => n.no_Voucher)
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 
                   });