gpt4 book ai didi

c# - 条款可能有误 : LINQ Select that will return entire intermediate object based on child subtype

转载 作者:行者123 更新时间:2023-11-30 18:24:06 25 4
gpt4 key购买 nike

我不确定如何正确表述问题,因此无法搜索。请考虑以下类(class):

public class Parent
{
public int ID { get; set; }
public List<Child> Children { get; set; }
}

public class Child
{
public int ID { get; set; }
public List<subChild> subChildren { get; set;}
}

public class subChild
{
public int ID { get; set; }
public string Type { get; set;}
}

我想要一个 linq 查询返回所有父项的列表,这些父项至少有一个 Child-> 某种类型的子项,但不一定只有该类型的子项。

例如:

Parent A
- Child Xa
- subchild 1a type="foo"
- subchild 2a type = "bar"
- Child Ya
- subchild 1a type="foo"
Parent B
- Child Xb
- subchild 1b type = "foo"
Parent C
- Child Xc
- subChild 1c type = "Bar"

这是我得到的地方(显然不正确。我的版本已编译,大小写不是问题)

Parents.Children.SelectMany(s => s.Subchildren).where(x => x.Type="Foo").Tolist();

我的实际实现有点不同,也许我的伪代码会按我想要的方式工作,但如果我查找 subChild.type = "Foo",我希望返回父 A 和 B。

最佳答案

您可以使用 Any :

Parents.Where(p => p.Children.Any(
c => c.Subchildren.Any(s => s.Type == "Foo"))).ToList();

不要忘记要检查相等性,您需要 == 而不是 =

要获取所有子项的列表,您需要类似的东西

Parents.SelectMany(p => p.Children).SelectMany(c => c.Subchildren)
.Where(s => s.Type == "Foo").ToList();

关于c# - 条款可能有误 : LINQ Select that will return entire intermediate object based on child subtype,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31661459/

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