gpt4 book ai didi

c# - 内部列表上的 Entity Framework 过滤器

转载 作者:太空宇宙 更新时间:2023-11-03 11:29:22 24 4
gpt4 key购买 nike

我使用 Entity Framework 并具有此实体映射:

Parent
- Child 1 (ActiveInd = "Y")
- Child 2 (ActiveInd = "N")
- Child 3 (ActiveInd = "Y")

我想要一个与此类似的 Linq 查询(但可以工作:)

Parent parent = (from p in DataContext.Current.Parents 
where p.ParentId == _parentId
&& p.Children.Active == true select p).FirstOrDefault();

它应该返回以下内容(仅事件记录):

Parent
- Child 1 (ActiveInd = "Y")
- Child 3 (ActiveInd = "Y")

最佳答案

如果您希望 parent 有至少一个活跃的 child :

from p in DataContext.Current.Parents
where p.ParentId == _parentId && p.Children.Any(c => c.Active)
select p

如果您希望 parent 拥有所有活跃的 child :

from p in DataContext.Current.Parents
where p.ParentId == _parentId && p.Children.All(c => c.Active)
select p

如果你想在同一个查询中过滤 child ,你可以这样做:

from p in DataContext.Current.Parents
where p.ParentId == _parentId
select new { Parent = p, ActiveChildren = p.Children.Where(c => c.Active) } into parentWithActiveChildren
where parentWithActiveChildren.FilteredChildren.Any()
select parentWithActiveChildren

或者

from p in DataContext.Current.Parents
where p.ParentId == _parentId && p.Children.Any(c => c.Active)
select new { Parent = p, ActiveChildren = p.Children.Where(c => c.Active) }

关于c# - 内部列表上的 Entity Framework 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8356404/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com