2009-03-31 12 views
0

次のSQLクエリは、linqに変換するとどのように見えますか?linqに変換すると、このSQLクエリ(w countとgroup by)はどのように見えますか?

SELECT 
    myId, Count(myId) 
FROM MyTable 
GROUP BY myId 

私は次のことを試してみた:

var q = from a in db.MyTable 
group a by a.Id into g 
let count = g.Count() 
select new 
{ 
    Count = Id, 
    Key= g.Key 
}; 

をそれが「キー」という名前のマッピングとはデシベル機能が存在しないことを示す列挙に例外が発生します。私はこの特定のアプリでLLBLGenを使用しています、そして、私はそれがどこに根ざしているのだろうと思っています。私は掘り出しを開始する前に私のlinqの構文が正しいことを確認したい。誰か間違ったことを見ますか?

答えて

3

これを試してみてください:

あなたとほぼ同じだが、あなたの Countは私に間違ったに見える別の方法で得られる
var q = from a in db.MyTable 
     group a by a.Id into g 
     select new { Id=g.Key, Count=g.Count() }; 

LLBLGenはしかしIGrouping.Keyを理解していない場合、それは難しいかもしれない...

あなたのLINQの構文が正しいかどうかをチェックするために、私はとして使用することは非常に簡単なメモリ内のリストを作成するお勧めしますあなたのテーブル。ここに例があります:

using System; 
using System.Collections.Generic; 
using System.Linq; 

class Test 
{ 
    static void Main() 
    { 
     var data = new[] { 
      new { Id="X", Name="Jon" }, 
      new { Id="Y", Name="Marc" }, 
      new { Id="X", Name="Holly" }, 
     }; 

     var query = from a in data 
        group a by a.Id into g 
        select new { Id=g.Key, Count=g.Count() }; 

     foreach (var entry in query) 
     { 
      Console.WriteLine(entry); 
     } 
    } 
} 

これは私に正しい結果を与えているようです。

+0

実際、私のやり方は奇妙でした。それは魅力のように機能します。ありがとうジョン –

関連する問題