简体   繁体   English

我怎样才能把它转移到 LAMBDA?

[英]How can i transfer this to LAMBDA?

Hell sir/mam地狱先生/妈妈

this is my raw query这是我的原始查询

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

how could i transfer this to lambda expression i wanna target it here in my DTO?我怎么能把它转移到 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; }
    }

Hello I got an answer already.你好,我已经得到答案了。

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();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM