2017-12-31 111 views
-1

ここでのアイデアは、すべてのレシピからすべての成分を合計することです。これは私のクエリですlinqからsqlへのSQLクエリ、トラブルによるグループ

SELECT IngredientName,sum(Amount) as Amount,Unit 
FROM RecipeIngredients Join Ingredients ON RecipeIngredients.IngredientID = Ingredients.IngredientsID 
GROUP BY IngredientID,IngredientName,Unit 
ORDER BY IngredientName 

素晴らしいです。問題ありません。私はSQL構文とlinqを混同しています。 これはこれまで私が持っていたものです。

using (lDataContext db = new lDataContext()) 
     { 
      return (from ri in db.RecipeIngredients join i in db.Ingredients on ri.IngredientID equals i.IngredientsID 

        group new {ri,i} by new {i.IngredientsID,i.IngredientName,ri.Unit } 
        into table 
        select new { 
         Name = table.IngredientName 
         Unit = table.Unit 
         Amount = table.Sum(i.amount) } 
        ).ToList(); 
     } 

私の構文で助けてもらえますか?

+3

例でグループを探してドキュメントを読んだことはありますか?私にはこれは簡単なものだと信じてください。この資料を見てもっと学ぶでしょう –

+0

どこの文書ですか? –

+1

ここでは例として検索機能があります.Googleにはドキュメントがあります。 –

答えて

0

  1. は別々の変数
  2. LINQの句の順序で各句を翻訳として副問い合わせを翻訳し、LINQにSQLを変換するための

    、あなたはエンティティへのLINQを使用してちょうどLINQ SQLにされていないと仮定すると、モナド演算子(DISTINCT、TOPなど)は、LINQクエリ全体に適用される関数として残ります。

  3. テーブルエイリアスを範囲変数として使用します。列の別名は、匿名の型フィールド名として使用します。
  4. 複数の列に対して匿名型(new {})を使用する
  5. 左結合は、結合変数を使用して結合変数から別の結合変数を実行し、その後に.DefaultIfEmpty()を実行することによってシミュレートされます。
  6. COALESCEを条件演算子とヌルテストに置き換えます。
  7. SELECT *は選択範囲変数または結合の場合はすべての範囲変数を含む匿名オブジェクトに置き換える必要があります。
  8. SELECT fldsをselect new {...}に置き換えて、必要なすべてのフィールドまたは式を含む匿名オブジェクトを作成する必要があります。
関連する問題