假设我有以下类:
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>,但我真的需要维护层次结构。
发布于 2010-12-28 02:15:11
你的问题有点含糊。这是一个重建子代和孙辈列表的解决方案,我不确定是否需要child.GrandChildren.All(gc => !gc.Gender),所以为了清楚起见,我省略了它:
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()
})发布于 2010-12-28 01:41:15
你要找的是
.Where(p => p.Children.All(c => !c.Gender && c.GrandChildren.All(g => !g.Gender))发布于 2010-12-28 02:12:17
List<Child>按字面意思翻译:
List<Child> results =
(
from c in theParent.Children
where !c.Gender
where c.GrandChildren.Any(gc => !gc.Gender)
select c
).ToList()根据你的评论,你真正想要的是:
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();https://stackoverflow.com/questions/4540523
复制相似问题