私はLINQに必要な方法で機能する次のSQLクエリを実現しようとしています。グループの価格が個々の価格よりも高い場合は、参加して製品を選択する 2 つの個別の SQL クエリがあります。オブジェクトに LINQ を使用しており、購入テーブルと製品テーブル用のオブジェクト ファクトリがあります。
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)});