2011-06-27 4 views
4

私はLINQのステートメントを持っています。私は正直にしようとしています。私の目的は、テーブルをクエリし、別のテーブルに参加してカウントを得ることです。グループのLINQ件数が参加しました

場所
ID、表示

ProfilePlaces
聞く

ID、PlaceID、トーク、基本的にPlacesは一対多の関係でProfilePlacesを持っています。私はSUMProfilePlacesTalkHearを持っています。 TalkおよびHearは、bitフィールドです。

以下は私にPlacesというユニークなリストを与えているので、TalkHearを追加する必要があります。

var counts = from p in db.Places 
      join pp in db.ProfilePlaces on p.ID equals pp.PlaceID 
      group new { Place = p } by p.Display; 

私はこのような何かを思ったが、運に任意の助け

var counts = from p in db.Places 
      join pp in db.ProfilePlaces on p.ID equals pp.PlaceID 
      group new { Place = p, 
         Talk = pp.Count(t => t.Talk == true), 
         Hear = pp.Count(t => t.Hear == true) 
         } by p.Display; 

感謝を持っていません。

+0

聞く==ミート:ここ

var counts2 = from p in places join pp in profilePlaces on p.ID equals pp.PlaceID into g select new { Place = p, CountMeet = g.Count(a => a.Meet), CountTalk = g.Count(a => a.Talk) }; 

は異なる上のドキュメントがMSDNから参加するのか?それはタイプミスですか? – naveen

+0

はい、修正されました。申し訳ありません。 –

答えて

10

Placeのカウントを取得するには、GROUP JOINを実行する必要があります。
http://msdn.microsoft.com/en-us/library/bb311040.aspx

+0

私はこれが解決策であると信じています。どのようにこのクエリに 'WHERE'条件を追加しますか? –

+0

私は選択の前にどこに来るべきかと思います。何をフィルターにかけようとしていますか? – rsbarro

+0

私は実際に存在をチェックする 'int'の別のコレクションを持っています。colInts.Contains(pp.ID)' –

関連する問題