【问题标题】:Entity Framework IGrouping error when selecting data选择数据时出现实体框架 IGrouping 错误
【发布时间】:2018-03-29 20:11:45
【问题描述】:

我有这个模型

public class Project
{
    [Required]
    public Guid Id { get; set; }
    [MaxLength(512)]
    [Required]
    public string ProjectName { get; set; }        
    public Category Category { get; set; }
    [ForeignKey("Category")]
    public Guid? CategoryId { get; set; }
}

public class Category
{
    [Required]
    public Guid Id { get; set; }
    public string CategoryName { get; set; }
    public ICollection<Project> Projects { get; set; }
}

这是视图模型:

public class TipoProyectoViewModel
{      
    public string CategoryName { get; set; }
    public IEnumerable<Project> MProject { get; set; }
}

当我编写代码以按类别获取项目列表时

Category = House
{
   { Id = 1, ProjectName = "my project" }
   { Id = 2, ProjectName = "my project2" }
}

Category = Cars
{
    { Id = 3, ProjectName = "my project3" }
    { Id = 5, ProjectName = "my project5" }
}

这就是我的控制器中的内容:

  var categories = _dbContext.Category
                             .Include(c => c.Projects)
                             .GroupBy(e => e.CategoryName)
                             .Select(e => new TipoProyectoViewModel()
                                              { 
                                                  CategoryName = e.Key, 
                                                  MProject = e.Key.Projects 
                                              });

我的问题是我在写的时候选择错误

MProject = e.Key.Projects

字符串不包含项目的定义,并且找不到接受字符串类型的第一个参数的扩展方法“项目”。您是否缺少参考资料?

我做错了什么?

【问题讨论】:

  • 你应该用_dbContext.Projects.GroupBy(x =&gt; x.Category.CategoryName ).Select(x =&gt; new TipoProyectoViewModel { CategoryName = x.Key, MProject = x });来做这个

标签: c# asp.net-mvc entity-framework-6 extension-methods


【解决方案1】:

您正在访问e.Key,这是一个分组的string 键。显然,它没有属性或方法.Projects。

您可以像这样从您的分组项目中收集Projects

MProject = e.SelectMany(cat => cat.Projects);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 2012-07-25
    • 1970-01-01
    • 1970-01-01
    • 2017-07-03
    • 2012-08-16
    • 1970-01-01
    相关资源
    最近更新 更多