[英]EF Core: filter condition for nested collection (Func<>) as a variable
[英]EF 4 Filter sub collection
我试图让我所有的主要团体及其相关实体。 而且我也想过滤BuildingPartData集合而不影响任何其他实体。 我几乎已经尝试了所有我能想到的事情,但是没有运气。
test.ContextOptions.LazyLoadingEnabled = false;
var buildingPartMainGroups = (from buildingPartMainGroup in test.BuildingPartMainGroup
from buildingPartSubGroup in buildingPartMainGroup.BuildingPartSubGroup
from buildingPart in buildingPartSubGroup.BuildingPart
from buildingPartData in buildingPart.BuildingPartData
where buildingPartData.StatusPendingApprove == true
//let buildingPartData = buildingPartMainGroup.BuildingPartSubGroup.Where(x => x.BuildingPart.Any(o => o.BuildingPartData.Any(y => y.StatusPendingApprove == true)))
select new
{
BuildingPartMainGroups = buildingPartMainGroup,
BuildingPartDatas = buildingPartData
}).ToList().Select(c => c.BuildingPartMainGroups);
foreach (var bb in buildingPartMainGroups)
{
foreach(var tt in bb.BuildingPartSubGroup)
{
foreach (var oo in tt.BuildingPart)
{
foreach (var ww in oo.BuildingPartData)
{
bool tes4t = ww.StatusPendingApprove;
}
}
}
}
这是模型
http://mimo-design.com/model.png
还不能插入图像。
var buildingPartMainGroups = test.BuildingPartMainGroup.Include("BuildingPartSubGroup.BuildingPart.BuildingPartData").
Where(bpmg => bpmg.BuildingPartSubGroup.
Any(o => o.BuildingPart.
Any(x => x.BuildingPartData.
Any(u => u.StatusPendingApprove == true))));
它只过滤了我的BuildingPartMainGroup实体。 我想拥有所有的BuildingPartMainGroup实体,并在BuildingPartData上添加条件/过滤器
您是否已经想到过类似的东西:
context.BuildingPartMainGroup
.Inlcude("BuildingPartSubGroups.BuildingParts.BuildingPartData")
.Where<BuildingPartMainGroup>(bpmg => bpmg.BuildingPartSubGroups.Any<BuildingPartSubGroup>(etc...
您不应该使用任何。 任何取值为布尔值。 因此,您实际上正在执行的操作是收集至少具有1个BuildingPartSubGroup的BuildingPartMainGroup,该建筑物最小GroupGroup的GroupGroup至少具有1个...至少具有一个BuildingPartData的,其StatusPendingApprove == true。
尝试考虑将Where <>()扩展方法完全链接到对象图。
希望这可以帮助...
编辑:
context.BuildingPartMainGroups
.Inlcude("BuildingPartSubGroups.BuildingParts.BuildingPartData")
.Where<BuildingPartMainGroup>
(bpmg => bpmg.BuildingPartSubGroups.Where<BuildingPartSubGroup>
(bpsg => bpsg.BuildingParts.Where<BuildingPart>
(bp => bp.BuildingPartData"s".Where<BuildingPartData>
(bpd => bpd.StatusPendingApprove == true))))
我想知道您是否在这里需要包含。 如果您只对BuidlingPartMainGroups感兴趣,而没有关联的数据,则没有必要。
一个有用的提示是使用SQl Profiler查看EF生成的确切SQL查询。 这样,您将对LinqToEntities查询为SQL生成的内容获得更多的了解。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.