2017-03-20 13 views
2

私はここにいるので、間違いがあれば謝ります。私は次のSQLコードを書いて、特定の教員の各ユーザーによる投稿数を取得しました。 MS SQL Serverの管理を通じて、このクエリを実行するlinq式としてSQLクエリを書くのに助けが必要です

declare @faculty as int = 1 
SELECT COUNT(ew_student.sName) AS Submissions, ew_student.sEmail, ew_faculty.nFaculty 
FROM ew_student 
INNER JOIN ew_submission ON ew_student.sId = ew_submission.sId INNER JOIN 
          ew_faculty ON ew_student.sFaculty = ew_faculty.fId 
WHERE ew_faculty.fId = @faculty 
GROUP BY ew_student.sEmail, ew_faculty.nFaculty 

は、しかし、私のASP.NET Webアプリケーションに私はLINQの式を書く難しさを持っています、私は期待していた結果を返します。

私のデータベースコンテキストは "db"と呼ばれます。これまでのところ私はこれを持っていますが、間違った結果を返します。私が作ったどのように多くの応募特定のユーザー取得したい

var stats = from ew_submissions in db.ew_submissions 
      where ew_submissions.ew_student.ew_faculty.fId == facultyId 
      group new { ew_submissions.ew_student, ew_submissions.ew_student.ew_faculty } by new 
      { 
       ew_submissions.ew_student.sEmail, 
       ew_submissions.ew_student.sName, 
       ew_submissions.ew_student.ew_faculty.nFaculty 

      } into g 
      select new 
      { 
       Submissions = g.Count(), 
       g.Key.sName 


      }; 

return stats.ToList(); 

は、しかし、常に上記のLINQの式は、ユーザごとに1を返します。

答えて

1

あなたがグループ(値)に何をしたいの場所を切り替え、何(キー)によって:

var stats = from ew_submissions in db.ew_submissions 
      where ew_submissions.ew_student.ew_faculty.fId == facultyId 
      group ew_submissions.ew_student.sName by new 
      { 
       ew_submissions.ew_student.sEmail, 
       ew_submissions.ew_student.ew_faculty.nFaculty 
      } into g 
      select new 
      { 
       Submissions = g.Count(), 
       g.Key.sName 
      }; 

return stats.ToList(); 

はまた、あなたはまた、グループにしたくないあなたはsEmailによってグループ化されたときにこととnFaculty見ますsNameによって、おそらく数え切れないほど多くの結果が得られるでしょう。

+0

こんにちはジルラッド、もう一度会えてよかったです。しかし、 'g.Key.sName'は' select'では動作しません。 –

+1

@IvanStoev - Yap :)は長い間ここにいませんでした。そして、ops :)それを逃した - 元のSQLは、実際のテキストの名前を使用していない:) –

+0

多くのありがとう!今すぐ行くように管理:) – Ale

関連する問題