2011-05-11 6 views
0

results変数に、各学生の成績情報を表示したいと考えています。EntityCollectionから特定の情報をフィルタリングするにはどうすればよいですか?

私のデータベースが設定されている方法は次のとおりです。

Grade --- GradeStudent --- Student 

だから、それぞれ異なる毎年、私はグレードのIDを保持しているユニークなGradeStudent記録、および学生のIDだけでなく、そのレコードの年を持っています。

ORMとしてEntity Framework 4を使用しました。私は、各生徒のdataGridViewにグレード名を表示したいと思います。

private void btnSearch_Click(object sender, EventArgs e) 
{ 
    StudentRepository repo = new StudentRepository(); 
    var results = 
     repo.FindAllStudents().Where(
      s => 
      s.Name == txtSearchQuery.Text || 
      s.LastNameFather == txtSearchQuery.Text || 
      s.LastNameMother == txtSearchQuery.Text); 

    dataGridView1.DataSource = results.Select(s => new 
    { 
     Codigo = s.StudentId, 
     Nombre = s.LastNameFather + " " + s.LastNameMother + ", " + s.Name, 
     Sexo = s.Sex, 
     Telefono = s.Telephone 
    }).ToList(); 
} 

私は以下を実行しようとすると、私の学生に関連する多くのGradeStudentのオブジェクトが存在することができるので、私は、EntityCollectionコレクションを呼び出すことができます。毎年1つ。

だから私はX年の間に彼があった成績を取得する必要があります。

これを達成する方法についてご意見はありますか?

+0

私は少し混乱しているが、グレード(X)、検索条件の一部ですか?私。このイベントに来る年を知っていますか、毎年複数の生徒記録が必要ですか? –

答えて

0

私が質問を理解すれば、Gradeオブジェクト(GradeStudentミドルテーブルを介して)を取得しようとしています。この場合、GradeをGradeStudent(* - 1)に、GradeStudentをStudent(0..1 - *)に関連付けるために、EFモデルでNavigationPropertyを作成する必要があります。

あなたのコンテキストにデータを取り込むのは、これはRIAを使った銀色のアプリですか?その場合、サービス内のGetStudentsQueryメソッドは、それらのエンティティを含めて、Studentオブジェクトとともにデータが返されるようにする必要があります。

0

gradeがわかっている場合、これは動作するはずです:

StudentRepository repo = new StudentRepository(); 
var results = 
    repo.FindAllStudents().Where(
     s => 
     (s.Name == txtSearchQuery.Text || 
     s.LastNameFather == txtSearchQuery.Text || 
     s.LastNameMother == txtSearchQuery.Text) && 
     s.GradeStudent.Any(gs => gs.Grade = grade)); 
関連する問題