2011-07-25 9 views
0

私はLinqのnoobだから私の無知を言い訳をしてくださいが、私はテーブルの列でグループ化し、その後、その列を返す必要があります。私は一意の数字のリストで終わるはずです。Linq単一列グループが動作していない

これは

from r in myTable 
group r.UserID by r.UserID 

私のLINQのですが、LINQのパッドにそれは私が欲しいものに近づくが、それぞれ同様のIDが結果に含まれ、「キー」または一緒にグループ化されたすべて同じIDを持つ何かを持っています。私は数字のリストがほしいだけです。

これは完璧なSQLです。

SELECT UserID FROM myTable 
GROUP BY UserID 

答えて

6

なぜ

var userIds = myTable.Select(r => r.UserId).Distinct(); 

や、クエリの構文を好む場合にのみ、グループIDを使用するつもりなら

var userIds = (from r in myTable select r.UserId).Distinct(); 

グループ化は不要です。

+1

+1ですが、「Distinct」は引数として投影をとっていません。構文は 'var userIds = myTable.Select(r => r.UserId).Distinct();'でなければなりません。 (クエリの構文のバージョンは正しいです。) – LukeH

+0

うわー、ありがとう、ありがとう。おそらくこれも速いでしょう。 – extracrispy

+0

@LukeHありがとうございました。 – dlev

1

私はあなたがしたい、実際のSQLはそれのあなたの特定の使用の副作用として、同じことをやっていることで

SELECT DISTINCT UserID FROM myTable 

グループだと思います。

LINQ文の構文で、同じ構文が機能する可能性が高いと思いますが、dlevは文の構文にはないので、SQLに正しく変換されるかどうかは確かではありません。

私が間違ってL2Sがバージョンを正しく変換するならば、必ずdlevがそれを釘付けにします。

0

あなたのクエリはあなたにグループを与えます。キーだけが必要な場合は、キーを取得する必要があります。

IQueryable<IGrouping<int, Record>> query1 = 
    from r in myTable 
    group r.UserID by r.UserID; 

IQueryable<int> query2 = 
    from r in myTable 
    group r.UserID by r.UserID into g 
    select g.Key; 

    //alternatively 
query1 = myTable.GroupBy(r => r.UserID); 
query2 = query1.Select(g => g.Key); 
関連する問題