gpt4 book ai didi

c# - 我应该用 LINQ 替换这些嵌套的 foreach 循环吗?如何替换?

转载 作者:太空宇宙 更新时间:2023-11-03 19:51:00 25 4
gpt4 key购买 nike

我从以下格式的服务接收数据:

public class Foo
{
string Name;
}
public class Bar
{
int ID;
List<Foo> Foos;
}
public class Container
{
List<Bar> Bars;
}

我需要在以下类中编写一个方法,返回容器中所有 Foos 的名称,并与其关联的 Bar 的 ID 配对:

public class FooBar
{
int BarID;
Foo Name;
}

这是我想出的:

IEnumerable<FooBar> FooBars(Container c)
{
foreach (var b in c.Bars)
{
foreach (var f in b.Foos)
{
yield return new FooBar() { BarID = b.ID; Name = f.Name; }
}
}
}

我有两个问题:

  • 如何使用 LINQ 而不是嵌套的 foreach 循环来编写它?
  • 这样做有什么充分的理由吗?

最佳答案

这是 LINQ 的 SelectMany 的查询语法,它允许您执行您所描述的操作。至于您为什么要这样做,我个人认为它更易于阅读。

from b in c.Bars
from f in b.Foos
select new FooBar {BarID = b.ID, Name = f.Name};

关于c# - 我应该用 LINQ 替换这些嵌套的 foreach 循环吗?如何替换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39541865/

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