繁体   English   中英

实体框架对具有列表的实体应用过滤器

[英]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#命名约定。 ItemsShow是属性,则它们将更加准确。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM