c# - 从父级到最后一个子级的自引用列表项计数
问题描述
我有一个自引用的类别列表,其中每个类别都有儿童列表,同时有一个项目列表。示例 category1(有 3 个项目,有 1 个子子类别)子类别(有 1 个项目,有父类别 1,没有子类别)当我获取包含项目计数的类别列表时,我希望得到 category1(itemcount = 4 ) 但我得到的是 3
public class Category {
public int Id { 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; }
public ICollection<Item> Items { get; set; }
}
下面是dto
public class CategoryForReturnDto
{
public string Name { get; set; }
public int Id { get; set; }
public int ItemsCount { get; set; }
public ICollection<Category> Children { get; set; }
public int ParentId { get; set; }
}
最后是自动映射器
CreateMap<Category, CategoryForReturnDto> ()
.ForMember (dest => dest.ItemsCount, opt => {
opt.MapFrom (src => src.Items.Count);
});
项目模型是
public class Item {
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public ICollection<ItemPhoto> Photos { get; set; }
public Category Category { get; set; }
public int CategoryId { get; set; }
}
数据库示例:
解决方案
你说你自己
示例 category1(有 3 个项目,有 1 个子子类别)
所以 ItemCount 正确返回 3。这正是您告诉它返回的内容:
opt.MapFrom (src => src.Items.Count);
我在子类别的 DTO 中看不到任何集合或属性;直到你把它们包括在内,你才能得到你想要的数字。(我不确定你会怎么称呼你想要的号码;ItemCount 具有误导性。)
推荐阅读
- python - 使用 Python 开发工具包的内置算法的 Amazon SageMaker 超参数调整错误
- excel - 从另一个单元格中选择下拉列表中的项目时自动填充单元格
- regex - 在长长的可变文本字符串中提取文本
- tcp - 现有的 tcp 转发代理,如 squid?
- react-native - 如何使用参数更改其他组件相同级别的状态?
- qt - 在 Qt Creator 中打开 GitAhead 时“找不到 OpenSSL”
- javascript - 在 Javascript 中清除 drawImage() 函数
- arrays - 从字典数组中提取元素
- google-chrome-devtools - 在 Chrome DevTools 中触发元素命令菜单的键盘快捷键?
- javascript - javascript中带有类标签的跨度之间文本的正则表达式