我想获取所有图层组,并包括(渴望加载)具有特定网址的图层。
这是我的桌子:
- LayerGroup (id, List<Layer>layers and more...)
- Layer(id, url, List<Attribute>attributes and more...)
- Attribute (id and more...)
这是我到目前为止所得到的。
var groups = _context.LayerGroups
.Where(group => group.IsActive)
.Where(g => g.Layers.All(l => l.IsActive == true))
.Where(g => g.Layers.All(l => l.Url == "example1"))
.Include(g => g.Layers)
.ThenInclude(layer => layer.Attributes)
.Include(group => group.Layers).ThenInclude(layer => layer.SearchEngines)
.ToList();
但是,似乎只有在所有层都处于活动状态并且具有URL example1的情况下才能获得组。我希望获取具有正确网址的图层,即使这些组的图层具有其他url:s。
答案 0 :(得分:0)
According to this您不能过滤Include
和ThenInclude
集合,但可以根据Include
的条件过滤父对象。如果需要,则可以按以下方式编写查询:
var groups = _context.LayerGroups.Where(group => group.IsActive)
.Include(g => g.Layers)
.ThenInclude(layer => layer.Attributes)
.Include(group => group.Layers)
.ThenInclude(layer => layer.SearchEngines)
.Where(g => g.Layers.Any(l => l.IsActive == true && l => l.Url == "example1"))
.ToList();