gpt4 book ai didi

linq - 有没有一种 linq-y 方法来联合对象集合的集合属性?

转载 作者:行者123 更新时间:2023-12-01 07:12:22 26 4
gpt4 key购买 nike

抱歉,这个标题太伤人了。我想知道是否有一个 Linq to collections 扩展方法可以将以下代码段折叠成一行:

public IEnumerable<Child> GetAllChildren(IEnumerable<Parent> parents){

var result = new List<Child>();

foreach(Parent parent in parents)
foreach(Child child in parent.Children)
result.Add(child);

return result;
}

如果您可以将其折叠为单个语句,请尝试以疯狂的难度进行操作:
public IEnumerable<Child> GetAllChildren(IEnumerable<Grandparent> nanas){

var result = new List<Child>();

foreach(Grandparent papa in nanas)
foreach(Parent parent in papa.Children)
foreach(Child child in parent.Children)
result.Add(child);

return result;
}

最佳答案

这将起作用:

public IEnumerable<Child> GetAllChildren(IEnumerable<Parent> parents)
{
return from parent in parents
from child in parent.Children
select child;
}

然后这个:
public IEnumerable<Child> GetAllChildren(IEnumerable<Grandparent> nanas)
{
return from papa in nanas
from parent in papa.Children
from child in parent.Children
select child;
}

请注意,在此示例中,我实际上并没有返回列表,而是返回一个 IEnumerable 数据源,在您开始对其进行 foreach 或类似操作之前,它实际上不会进行任何处理。

如果需要返回一个列表,修改每个返回语句如下:
    return (from .....
...
select child).ToList();

关于linq - 有没有一种 linq-y 方法来联合对象集合的集合属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/205158/

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