2012-12-11 3 views
0

LINQ에 필요한 방식으로 작동하는 다음 SQL 쿼리를 수행하려고합니다. 그룹 가격이 개별 가격보다 높으면 제품을 선택하는 것보다 제가 가입하는 2 개의 개별 SQL 쿼리가 있습니다. 개체에 LINQ를 사용하고 Purchases 및 Products 테이블에 개체 팩터 리가 있습니다. C#에서 두 개의 별도 LINQ 쿼리를 objectFactory로 결합합니다.

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)}); 
+1

뭐죠 SQL의 첫 번째 선택 쿼리의 어디 절하고 ?? 'p.Prod_ID, p.Name' – FosterZ

+0

내 Group By and Where가 엉망이되어 편집을 수정했습니다. 캐치 포스터 Z – JasonTheLucky

답변

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

Groo를 찾아 주셔서 감사합니다. 나는 LINQ가 유용 할 수 있다고 생각한다. – JasonTheLucky

관련 문제