0

我正在尝试实现以下 SQL 查询,该查询以我需要的方式进入 LINQ。我加入了 2 个单独的 SQL 查询,如果团体价格大于单个价格,则选择产品。我正在使用 LINQ to 对象,并为 Purchases 和 Products 表提供了一个对象工厂。

select DISTINCT(a.Name) from
(select p.Prod_ID, p.Name, SUM(p.Price) as Total
from Tb_AvailableProduct p, Tb_Purchases o
where p.Prod_ID = o.Prod_ID
group by p.Prod_ID, p.Name) a
JOIN
(select p.Prod_ID, p.Price
from Tb_AvailableProduct p, Tb_Purchases o
where p.Prod_ID = o.Prod_ID) b
on a.Prod_ID = b.Prod_ID
where a.Total > b.Price

我在 Linq 中有第一个查询,但我只想选择一个产品名称,如果该产品的组价大于产品的单个价格.. 即已售出多个产品。我试图用一个总和而不是一个计数来完成这个。

from o in this.myObjectFactory.ThePurchases
join p in this.myObjectFactory.TheProducts.Values
on o.ProductID equals p.ProductID
where o.CustomerID == customer.CustomerID
group p by p.ProductID into query1
select new { ProductID = query1.Key, TotalPurchasesThisYear = query1.Sum (p => p.Price)});
4

1 回答 1

1

像这样的东西可能会起作用(它与您的 SQL 查询非常相似):

var result = 
    from a in
        (
            from p in TheProducts
            join o in ThePurchases
            on p.ProductID equals o.ProductID
            group p by new { p.ProductID, p.Name, p.Price } into g
            select new
            {
                ProductID = g.Key.ProductID,
                Name = g.Key.Name,
                Total = g.Sum(i => i.Price)
            }
        )
    join b in
        (
            from p in TheProducts
            join o in ThePurchases
            on p.ProductID equals o.ProductID
            select new
            {
                ProductID = p.ProductID,
                Price = p.Price
            }
        )
    on a.ProductID equals b.ProductID
    where a.Total > b.Price
    select a.Name;

result = result.Distinct();
于 2012-12-11T08:51:08.497 回答