[英]Entity Framework apply filter with entities that have lists
我有使用实体框架的这段代码
var test = _dbContext.Category
.Include(t => t.Items)
.Where(t => t.items.show == true)
.ToList();
类别具有项目列表。 但是,我无法应用过滤器show == true
。
为什么会这样呢? 我如何解决它?
谢谢
t=>t.items.show==true
中的项目是一个集合,而不是单个项目,因此没有show
属性。
如果只需要使用show == true加载项目,则可以分别加载它们:
var categories = _dbContext.Category.ToList();
var items = _dbContext.Category.SelectMany(x => x.Items).Where(x => x.show == true).ToList();
EF会将这些项目自动添加到适当的类别。
您可以将Any
用于此类请求,并且如果不使用除过滤之外的其他项目,则可以避免使用Include。
var test = _dbContext.Category
.Where(t => t.items.Any(item=> item.show == true))
.ToList();
PS:我强烈建议使用C#命名约定。 Items
和Show
是属性,则它们将更加准确。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.