选择具有子类别的类别

时间:2017-09-19 13:02:41

标签: c# entity-framework linq

我有一个包含类别和子类别的表,看起来像这样:

public class Category
{
    public int CategoryId { get; set; }
    public string Name { get; set; }
    public int? ParentId { get; set; }
    public virtual Category Parent { get; set; }
    public virtual ICollection<Category> Children { get; set; }
}

我想在CategoryItem中创建类别的分层树:

public class CategoryItem
{
    public string Name { get; set; }
    public ICollection<CategoryItem> Children { get; set; }
}

这就是我尝试将其分组到漂亮树中的方式:

var result = await (from c in _context.Categories
                    where c.ParentId == null
                    select new CategoryItem
                    {
                        Name = c.Name,
                        Children = (from c2 in _context.Categories
                                    where c2.ParentId == c.CategoryId
                                    select new CategoryItem
                                    {
                                        Name = c2.Name
                                    }).ToList()
                    }).ToListAsync();

我收到错误:

  

“WebShop.Models.CategoryItem”类型在两个结构中出现   单个LINQ to Entities查询中的不兼容初始化。一个   type可以在同一个查询中的两个位置初始化,但仅限于   两个地方都设置了相同的属性,这些属性是   按相同的顺序设置。

我怀疑我必须为第二个对象的Children分配一些内容,但我尝试分配new List<CategoryItem>()null,但没有结果。

0 个答案:

没有答案