2011-08-03 26 views
4

SQL得る:LINQのへの変換LINQ - グループ化と結合し、平均

SELECT DeptId,avg(Marks) FROM StudentTb s 
JOIN StudInDepartment d on s.StudentId = d.StudentId 
GROUP BY DeptId 

を:

var deptRpts =   from s in this.ObjectContext.StudentTb 
         join d in this.ObjectContext.StudInDepartment on s.StudentId equals d.StudentId 
         group s by d.DeptId into grp 
         select new { 
          DeptId = grp.Key, 
          AverageMarks = grp.Average(ed=>ed.Marks) 
         }; 

は、空の結果リストを手に入れました。

結果セットデバッグmode.Its中を拡大しているときにエラー機能評価は、この上の助けが必要

をタイムアウトしまし示しています。

+0

グループを除外して参加するときに空でないリストが表示されますか? – Jeroen

+0

@Jeroen私が参加を削除した場合、その結果が表示されます(空ではありません)。 – Hukam

+0

とそれでは参加しませんか?あなたの2つのテーブルは本当にstudentidsを共有していますか?そうでない場合は、それらを結合すると常に空のリストが得られ、左結合を考慮する必要があります。 – Jeroen

答えて

7

クエリは正常に動作します。少なくとも私のモックアップでは、一緒に投げただけです...データベースがどのように構成されているかと関係があります。私のモックアップで私はstudentIDを持っていますStudInDepartment(HA!)テーブル、さらには、この単純化されたクエリへの外部キーは

var deptRpt2 = from d in ctx.StudInDepartment 
    group d by d.DeptId into grp 
    select new { 
     Dept = grp.Key, 
     AverageMarks = grp.Average(ed=>ed.StudentTb.Marks) 
    }; 

あなたがそこにあなたを助けることができない、Visual Studioのdebugger issueかもしれ「機能評価がタイムアウトした」受信したメッセージOK]をクリックして、他のtheresの作品それを議論するstackoverflowからのスレッド。

+0

ありがとうございました。 – Hukam

+0

問題ありません!このクエリはあなたのためにうまく機能しましたか? – curtisk

+0

その魅力的な作品:) – Hukam

関連する問題