首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LINQ -集合内部的筛选器集合

LINQ -集合内部的筛选器集合
EN

Stack Overflow用户
提问于 2010-12-28 01:31:14
回答 4查看 26.8K关注 0票数 5

假设我有以下类:

代码语言:javascript
复制
class Parent
{
    bool Gender { get; set; }
    List<Child> Children { get; set; }
}


class Child
{
    bool Gender { get; set; }
    List<Child> GrandChildren { get; set; }
}


class GrandChild
{
    bool Gender { get; set; }
}

使用linq,是否有人可以帮助我通过返回一个List<Child>来过滤父对象,其中每个子对象都有Gender == false,每个子对象的GrandChild都有Gender == false

我设法返回了一个List<GrandChild>,但我真的需要维护层次结构。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-12-28 02:15:11

你的问题有点含糊。这是一个重建子代和孙辈列表的解决方案,我不确定是否需要child.GrandChildren.All(gc => !gc.Gender),所以为了清楚起见,我省略了它:

代码语言:javascript
复制
parents.Select(parent => new Parent
{
  Gender = parent.Gender,
  Children = parent.Children.Where(child => !child.Gender).Select(child => new Child
    {
      Gender = false,
      GrandChildren = child.GrandChildren.Where(gc => !gc.Gender).ToList()
    }
  ).ToList()
})
票数 6
EN

Stack Overflow用户

发布于 2010-12-28 01:41:15

你要找的是

代码语言:javascript
复制
.Where(p => p.Children.All(c => !c.Gender && c.GrandChildren.All(g => !g.Gender))
票数 16
EN

Stack Overflow用户

发布于 2010-12-28 02:12:17

  • help me filter a Parent object
  • by returning a List<Child>
  • where each
  • has Gender == false
  • and each Child's GrandChild has Gender == false?

按字面意思翻译:

代码语言:javascript
复制
List<Child> results =
(
  from c in theParent.Children
  where !c.Gender
  where c.GrandChildren.Any(gc => !gc.Gender)
  select c
).ToList()

根据你的评论,你真正想要的是:

代码语言:javascript
复制
List<Parent> result = 
(
from p in Parents
where !p.Gender
select new Parent()
{
  Gender = p.Gender,
  Children = 
  (
    from c in p.Children
    where !c.Gender
    select new Child()
    {
      Gender = c.Gender,
      GrandChildren =
      (
        from gc in c.GrandChildren
        where !gc.Gender
        select new GrandChild()
        {
          Gender = gc.Gender
        }
      ).ToList()
    }
  ).ToList()
}).ToList();
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4540523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档