【问题标题】:How can i transfer this to LAMBDA?我怎样才能把它转移到 LAMBDA?
【发布时间】:2020-04-07 03:33:01
【问题描述】:

该死的先生/妈妈

这是我的原始查询

SELECT
dbo.Products.AHPPartnerId,
dbo.Products.Name AS Product,
dbo.AHPPartners.Name AS Partner,
Count(dbo.OrderProducts.ProductId) AS totalCount,
dbo.Products.Id AS ProductId

FROM
dbo.AHPPartners
RIGHT JOIN dbo.Products ON dbo.Products.AHPPartnerId = dbo.AHPPartners.Id
RIGHT JOIN dbo.OrderProducts ON dbo.OrderProducts.ProductId = dbo.Products.Id
GROUP BY
dbo.AHPPartners.Id,
dbo.Products.AHPPartnerId,
dbo.Products.Name,
dbo.AHPPartners.Name,
dbo.Products.Id
ORDER BY
totalCount DESC

我如何将它转换为 lambda 表达式我想在我的 DTO 中定位它?

    {
        public long ProductId { get; set; }
        public long? PartnerId { get; set; }
        public string PartnerName { get; set; }
        public string  ProductName { get; set; }
        public double TotalCount { get; set; }
    }

【问题讨论】:

    标签: c# asp.net linq lambda


    【解决方案1】:

    你好,我已经得到答案了。

    var topseller = await Context.Entities.Products
                                    .GroupJoin(Context.Entities.AHPPartners,
                                        products => products.AHPPartnerId,
                                        ahp => ahp.Id,
                                        (products, ahp) => ahp.Select(s => new { p = products, a = s }).DefaultIfEmpty(new { p = products, a = (AHPPartner)null })
                                    ).SelectMany(g => g)
                                    .Join(Context.Entities.OrderProducts,
                                        firstJoin => firstJoin.p.Id,
                                        orderProducts => orderProducts.ProductId,
                                        (firstJoin, orderProducts) => new { firstJoin.p, firstJoin.a, orderProducts }
                                    )
                                    .Select(s => new { 
                                        ProductName = s.p.Name,
                                        ProductId = s.p.Id,
                                        PartnerName = s.a.Name,
                                        PartnerId = s.a.Id
                                    })
                                    .GroupBy(g => new { g.PartnerName, g.ProductName, g.ProductId, g.PartnerId })
                                    .Select(s => new TopSellerProductDTO { 
                                        ProductName = s.Key.ProductName,
                                        PartnerName = s.Key.PartnerName,
                                        PartnerId = s.Key.PartnerId,
                                        ProductId = s.Key.ProductId,
                                        TotalCount = s.LongCount()
                                    })
                                    .ToListAsync();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-28
      • 1970-01-01
      • 2018-03-26
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 2017-03-10
      • 1970-01-01
      相关资源
      最近更新 更多