C# 我是否应该用LINQ替换这些嵌套的foreach循环,以及如何替换?
我从服务接收以下格式的数据:C# 我是否应该用LINQ替换这些嵌套的foreach循环,以及如何替换?,c#,linq,C#,Linq,我从服务接收以下格式的数据: public class Foo { string Name; } public class Bar { int ID; List<Foo> Foos; } public class Container { List<Bar> Bars; } 这就是我想到的: IEnumerable<FooBar> FooBars(Container c) { foreach (var b in c.Ba
public class Foo
{
string Name;
}
public class Bar
{
int ID;
List<Foo> Foos;
}
public class Container
{
List<Bar> Bars;
}
这就是我想到的:
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};
这是LINQ的SelectMany的查询语法,它允许您执行所描述的操作。至于你为什么要这样做,我个人觉得它更容易阅读
from b in c.Bars
from f in b.Foos
select new FooBar {BarID = b.ID, Name = f.Name};