2012-03-07 2 views
1

다음 SQL 문을 linq 쿼리로 변환하려고하지만 어떤 이유로 작업 할 수 없습니다 !! SQL 쿼리를 Linq Lambda 문으로 변환

SELECT  o.ITEMID, COUNT(o.ITEMID) AS COUNT, MAX(i.QUANTITY) AS Quantity 
FROM  ORDERS AS o LEFT OUTER JOIN 
      INVENTORY AS i ON o.ITEMID = i.ITEMID 
      GROUP BY o.ITEMID 

나는 누군가가 비슷한 문제가 있지만 내가 필요에 이것을 적용하는 것 캔트, this link을 발견했다.


감사합니다.

내가 지금까지

내가 지금 무엇입니까 오류가
Dim castleavailability = _ 
      From o In orders _ 
      From i In inventorys _ 
      Where (x >= o.ITEMID = i.ITEMID) 
      Group New With {o, i} By o.ITEMID Into oi() 
      Select New With {.ItemId = oi.Key, .Count = oi.Select(y >= y.o.ItemId).Count(), .Quantity = oi.Select(y >= y.i.Quantity).Max()} 

이 코드는 "정의 방식의 'ㅅ'은이 컨텍스트에서 액세스 할 수 없습니다." "new with group"라인을 참조하십시오. 당신이

var query = from o in context.Orders 
      from i in context.Inventory 
          .Where(x = > o.ItemId = x.ItemId) 
          .DefaultIfEmpty() 
      group new { o, i } by o.ItemId into oi 
      select new 
      { 
       ItemId = oi.Key, 
       Count = oi.Select(y => y.o.ItemId).Count(), 
       Quantity = oi.Select(y => y.i.Quantity).Max(), 
      }; 
+0

을 지금까지 시도 무엇입니까? 그리고 "그것은 작동하지 않습니다"는 오류 설명이 아닙니다! 컴파일되지 않습니까? 런타임 예외가 발생합니까? 그것은 실행하지만 잘못된 결과를 반환합니까? –

+0

Linq-To-SQL 또는 Linq-To-Entities입니까? 그것들은 같은 것이 아닙니다. – cadrell0

+0

안녕하세요 죄송합니다 그것은 엔티티에 linq입니다. 나는 Linq to SQL을 클릭하는 것을 의미하지 않았다. – user789433

답변

4

를 해결하는 방법에 대한 아이디어는이 작업을해야합니다.

당신은 다음 링크에서이 소프트웨어를 얻을 수 있습니다 :

http://www.sqltolinq.com/

+0

와우 그것이 매우 빨리 내가 ​​지금 이것을 시험 할 것이고 매우 빨리 감사했다. – user789433

+0

안녕 약간 VS에 표시 오류 내가 가지고 없애 VB로 코딩하고 있으므로이 변경 희미한 castleavailability = _ 주문에 오에서 _ inventorys에서 전에서 _ 경우 (X> = o.ITEMID = x.ItemId) o.ItemId by oi new (ItemId = oi.Key, Count = oi.Select (y => yoItemId) .Count(), Quantity = oi)로 새 그룹 {o, i}를 그룹화하십시오. 'group new {'에 'Type'또는 'with'가 포함 된 오류가 발생했습니다. 감사합니다. – user789433

+0

@ user789433 - 죄송합니다. VB에서 코딩하지 마십시오. – Aducci

0

또한 Linq에 람다 쿼리에 SQL 쿼리를 변환 Linqer 소프트웨어를 사용할 수 있습니다이

많은 감사

+0

Linqer를 사용하고 있지만 Lambda 표현식을 사용하여 SQL을 Linq로 변환하는 옵션을 찾을 수 없습니다. 단지 고전적인 Linq입니다. – AlexGH