C# 使用linq将对象集合的列表成员的内容合并到单个列表中
是否可以用linq替换下面的foreach循环C# 使用linq将对象集合的列表成员的内容合并到单个列表中,c#,linq,C#,Linq,是否可以用linq替换下面的foreach循环 public class Foo { List<Bar> Bars {get; set;} } List<Foo> fooList = GetFooList(); List<Bar> allBars = new List<Bar>(); foreach (Foo foo in fooList) { allBars.AddRange(foo.Bars); } 它提供了一个列表您可以
public class Foo
{
List<Bar> Bars {get; set;}
}
List<Foo> fooList = GetFooList();
List<Bar> allBars = new List<Bar>();
foreach (Foo foo in fooList)
{
allBars.AddRange(foo.Bars);
}
它提供了一个列表
您可以在foo.bar上使用SelectMany()
allBars.AddRange(fooList.SelectMany(foo => foo.Bars));
如果allBars变量在AddRange()之前不包含任何内容,则可以跳过对象创建:
List<Bar> allBars = fooList.SelectMany(foo => foo.Bars).ToList();
List allbar=doulist.SelectMany(foo=>foo.bar.ToList();
如果你不打算在其他地方使用傻瓜,你可以写:
List<Bar> allBars = GetFooList().SelectMany(foo => foo.Bars).ToList();
List allbar=get傻瓜列表().SelectMany(foo=>foo.bar.ToList();
您可以在foo.bar上使用SelectMany()
allBars.AddRange(fooList.SelectMany(foo => foo.Bars));
如果allBars变量在AddRange()之前不包含任何内容,则可以跳过对象创建:
List<Bar> allBars = fooList.SelectMany(foo => foo.Bars).ToList();
List allbar=doulist.SelectMany(foo=>foo.bar.ToList();
如果你不打算在其他地方使用傻瓜,你可以写:
List<Bar> allBars = GetFooList().SelectMany(foo => foo.Bars).ToList();
List allbar=get傻瓜列表().SelectMany(foo=>foo.bar.ToList();
Linq的SelectMany是你的朋友
林克的SelectMany是你的朋友 还有另一种变化:
List<Foo> fooList = GetFooList();
List<Bar> allBars = fooList.SelectMany(x => x.Bars).ToList();
List愚人主义者=get愚人主义者();
列出allBars=傻瓜列表。选择多个(x=>x.Bars)。ToList();
和另一个变体:
List<Foo> fooList = GetFooList();
List<Bar> allBars = fooList.SelectMany(x => x.Bars).ToList();
List愚人主义者=get愚人主义者();
列出allBars=傻瓜列表。选择多个(x=>x.Bars)。ToList();
这是另一个
List<Bar> allBars = fooList.SelectMany(foo => foo.Bars).ToList();
List allbar=doulist.SelectMany(foo=>foo.bar.ToList();
这是另一个
List<Bar> allBars = fooList.SelectMany(foo => foo.Bars).ToList();
List allbar=doulist.SelectMany(foo=>foo.bar.ToList();