Как я могу передать это в LAMBDA? - PullRequest
0 голосов
/ 07 апреля 2020

Ад сэр / мам

это мой необработанный запрос

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

как я могу перевести это в лямбда-выражение, я хочу нацелить его здесь, в моем 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; }
    }

1 Ответ

0 голосов
/ 07 апреля 2020

Здравствуйте, я уже получил ответ.

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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...