LINQ变量强制转换AsEnumerator,但视图抛出错误,说它是System.Data.Entity.Infrastructure.DbQuery

时间:2016-03-22 04:50:12

标签: c# entity-framework linq

我在方法中有这个:

        var Student = _db.Students.Join(_db.StudentGrades, s => s.ENumber,
           sg => sg.StudentENumber, (s, sg) => new { Student = s, StudentGrade = sg })
           .Where(sc => sc.StudentGrade.LetterGrade == "A").Select(sgl => new SCourse
           {
               LastName = sgl.Student.LastName,
               CourseCode = sgl.StudentGrade.CourseCode,
               CourseNumber = sgl.StudentGrade.CourseNumber
           });
        return View(Student.AsEnumerable());
    }

当我在视图中查看预期结果时,我收到一条错误消息,说它作为查询发送到视图,而不是作为可枚举。

The model item passed into the dictionary is of 
type 'System.Data.Entity.Infrastructure.DbQuery`1[Practice.ViewModels.SCourse]', 
but this dictionary requires a model item of 
type 'System.Collections.Generic.IEnumerable`1[Practice.ViewModels.AllStudents]'.

为什么会尝试说它正在接收查询项而不是可枚举的?

以下是View的开头,如果这可能与它有关:

@model IEnumerable<Practice.ViewModels.AllStudents>

1 个答案:

答案 0 :(得分:2)

使用

 @model IEnumerable<Practice.ViewModels.SCourse>

而不是

 @model IEnumerable<Practice.ViewModels.AllStudents>

您通过了名为 SCourse 的模型。但在视图文件中,您需要模型 AllStudents ,这就是您收到此错误的原因。