【问题标题】:Unable to get Count in lambda expression - NotSupportedException无法在 lambda 表达式中获取计数 - NotSupportedException
【发布时间】:2014-11-21 12:56:41
【问题描述】:

我正在尝试使用以下查询获取每个学生的科目数:

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 不支持指定的类型成员“主题”。仅支持初始化器、实体成员和实体导航属性

【问题讨论】:

  • 你能添加你的学生和学科模型的相关部分吗?
  • 我们需要查看您的模型定义。 EF 告诉你 Subjects 不可查询。

标签: c# entity-framework lambda notsupportedexception


【解决方案1】:

在实现查询之前,您将无法访问IList 接口(如Count)上的非entity member 属性。

要么早点实现:

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();

【讨论】:

    【解决方案2】:

    你试过了吗:

    var count = context.Students.Select(x=>new { Name = x.Student.FirstName, 
        NoOfSubject = x.Subjects.SubjectId.Count}).ToList();
    

    【讨论】:

      猜你喜欢
      • 2014-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多