2012-03-07 18 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()} 

私は今取得していますエラーは、「メソッドの定義 『OI』は、このコンテキストではアクセスできません。」私が持っているコードです。 「new with group」行を参照してください。この

多くのおかげ

+0

をあなたがこれまでに試してみましたか?そして "それは動作しません"エラーの説明ではありません!それはコンパイルされませんか?ランタイム例外がスローされますか?それは実行されますが、間違った結果を返しますか? –

+0

Linq-To-SQLまたはLinq-To-Entitiesですか?彼らは同じことではありません。 – cadrell0

+0

こんにちは申し訳ありませんが、エンティティにlinqです。私はSQLにLinqをクリックすることを意味しなかった – user789433

答えて

4

を解決する方法上の任意のアイデアは、これはあなた

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

うわー、これは非常に速くありがとう非常に私は今これをテストします。 – user789433

+0

こんにちは、私はVBでコーディングしていますので、VSで示すエラーを取り除くために、わずかにこれを変更している私は 薄暗いcastleavailabilityを持っている= _ 注文でOから_ inventorysで私から _ どこ(X> = o.ITEMID = x.ItemId) o.ItemId into Oi 新しい(ItemId = oi.Key、Count = oi.Select(y => yoItemId).Count()、Quantity = oi)でグループnew {o、i}をグループ化します。 ありがとう – user789433

+0

@ user789433 - 私はVBでコードを作成しません。エラーメッセージが表示されたら、[はい]をクリックしてください(y => yiQuantity).Max()} – Aducci

0

のために働く必要がありますまた、LINQのラムダクエリにSQLクエリを変換するLinqerソフトウェアを使用することができます。

次のリンクから、このソフトウェアを入手することができます

http://www.sqltolinq.com/

+0

私はLinqerを使用していますが、Lambda式を使用してSQLをLinqに変換する選択肢はありません。ちょうど古典的なLinq – AlexGH

関連する問題