我有使用实体框架的代码
var test = _dbContext.Category
.Include(t => t.Items)
.Where(t => t.items.show == true)
.ToList();
一个类别具有项目列表。但是,我无法应用过滤器show == true
。
为什么会这样?我该如何解决?
谢谢
答案 0 :(得分:3)
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将自动将这些项目附加到适当的类别。
答案 1 :(得分:2)
您可以使用Any
进行此类请求,如果不使用除过滤之外的其他项目,则可以避免使用“包含”。
var test = _dbContext.Category
.Where(t => t.items.Any(item=> item.show == true))
.ToList();
P.S:我强烈建议使用C#命名约定。 Items
和Show
如果是属性,则更准确。