我正在尝试使用以下查询获取每个学生的科目数:
var selectedSubject = context.Students
.Include(d => d.Subjects)
.Select(dr => new
{
Name = dr.Student.FirstName,
NoOfSubject = dr.Subjects.Count
})
.ToList();
但我得到了一个例外
未处理的类型' System.NotSupportedException'发生在EntityFramework.SqlServer.dll
中其他信息:指定的类型成员'主题' LINQ to Entities不支持。仅支持初始化程序,实体成员和实体导航属性
答案 0 :(得分:1)
您无法访问entity member
界面上的非IList
属性(例如Count
),直到查询具体化为止。
要么尽早实现:
var selectedSubject = context.Students
.Include(d => d.Subjects)
// .Where() goes here,
.ToList()
.Select(dr => new
{
Name = dr.Student.FirstName,
NoOfSubject = dr.Subjects.Count
})
.ToList();
或者,使用Count()
方法,该方法可以映射到Sql:
var selectedSubject = context.Students
.Include(d => d.Subjects)
.Select(dr => new
{
Name = dr.Student.FirstName,
NoOfSubject = dr.Subjects.Count()
})
.ToList();
答案 1 :(得分:0)
你试过这个:
var count = context.Students.Select(x=>new { Name = x.Student.FirstName,
NoOfSubject = x.Subjects.SubjectId.Count}).ToList();