0

ナビゲーション プロパティの熱心な読み込みを使用してクエリを作成しようとしています。ナビゲーション プロパティのプロパティを読み込む方法はありますか? 以下のコードを試すと、「シーケンスに要素が含まれていません」という例外が発生します。

       var viewModel = new InstructorIndexData();
        viewModel.Instructors = db.Instructors.Include(i => i.OfficeAssignment)
            .Include(i=>i.Assignments) 
             .Include(i => i.Students)
             .Include (i=>i.Enrollments )
            .Include(i => i.Courses.Select(c => c.Department))
            .OrderBy(i => i.LastName);

        viewModel.Courses = viewModel.Instructors.Where(i => i.InstructorID == id).Single().Courses;
        viewModel.Enrollments = viewModel.Courses.Where(x => x.CourseID == courseID).Where( e=>e.Enrollments.First().InstructorFullName == "Kim Abercrombie").Single().Enrollments;

ただし、使用する場合:

            viewModel.Enrollments = viewModel.Courses.Where(x => x.CourseID == courseID).Single().Enrollments;

私のviewModel.Enrollmentプロパティに問題なく入力します。linq クエリでこのタイプの複雑なプロパティにアクセスする方法はありますか?

4

2 に答える 2

0

ナビゲーションプロパティのプロパティをロードする方法はありますか?

すでに複数のレベルを熱心にロードする方法を知っているようです。

viewModel.Instructors = db.Instructors.Include(i => i.OfficeAssignment)
        .Include(i=>i.Assignments) 
         .Include(i => i.Students)
         .Include (i=>i.Enrollments )
        .Include(i => i.Courses.Select(c => c.Department))
        .OrderBy(i => i.LastName);

これはおそらく例外(またはおそらく他の使用法.Single())を取得している場所です:

viewModel.Enrollments = viewModel.Courses
   .Where(x => x.CourseID == courseID)
   .Where( e=>e.Enrollments.First().InstructorFullName == "Kim Abercrombie")
   .Single().Enrollments;

ドキュメントから.Single()

シーケンスの唯一の要素を返し、シーケンスに要素が1つだけない場合は、例外をスローします。

于 2013-03-19T09:19:46.530 に答える
0

これが私がそれを解決した方法です。var selectTemp = viewModel.Courses.Where(x => x.CourseID == courseID).Single().Enrollments;

            var selectedTeacher = from t in selectTemp where t.InstructorFullName == teacher select t;


            viewModel.Enrollments = selectedTeacher;
于 2013-03-23T06:46:09.017 に答える