无法获取计数的lambda表达式 - NotSupportedException异常
问题描述:
我试图让每个学生都使用下面的查询主体的数量:无法获取计数的lambda表达式 - NotSupportedException异常
var selectedSubject = context.Students
.Include(d => d.Subjects)
.Select(dr => new
{
Name = dr.Student.FirstName,
NoOfSubject = dr.Subjects.Count
})
.ToList();
但我得到一个异常
未处理在EntityFramework.SqlServer.dll中发生类型'System.NotSupportedException'异常
附加信息:LINQ to Entities中不支持指定的类型成员'主题'。只有初始化,实体成员和实体导航属性都支持
答
您将无法访问IList
接口上非entity member
属性(如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();
答
您是否尝试过这样的:
var count = context.Students.Select(x=>new { Name = x.Student.FirstName,
NoOfSubject = x.Subjects.SubjectId.Count}).ToList();
你可以添加你的学生的相关部分和主题模式? – 2014-11-21 13:01:42
我们需要看你的模型定义。英孚正在告诉你,“主题”不是可查询的。 – 2014-11-21 13:11:12