在Linq中写这个的最好方法

时间:2014-11-20 14:25:32

标签: c# linq

如何在LINQ中重构此内容。我正致力于采用良好的编码实践。我的tds对象看起来像这样:          tds - > BuildingName(列表) - > buildingFloor(串) 我使用嵌套的foreach循环完成的是将buildingFloors读入列表。

List<string> bname = new List<string>();

foreach (var building in tds) {
    foreach (var x in building.BuildingName) {
        bname.Add(x);
    }
}

6 个答案:

答案 0 :(得分:4)

您可以使用SelectMany来完成展示项目

List<string> bname = tds.SelectMany(b => b.BuildingName).ToList();

答案 1 :(得分:3)

使用Enumerable.SelectMany展开您的列表,如:

List<string> bname = tds.SelectMany(r=> r.BuildingName).ToList();

答案 2 :(得分:2)

您正在寻找的是SelectMany。

var bname = buildings.SelectMany(b => b.BuildingName);

注意,如果你要使用 foreach 多次枚举结果,那么你可能想要ToList()它,所以你有一个硬列表而不是一个可枚举的每次枚举时执行。

var bname = buildings.SelectMany(b => b.BuildingName).ToList();

答案 3 :(得分:1)

我想这样的事情:

var bname = tds.SelectMany(x => x.BuildingName);

如果您需要在结尾处使用列表调用.ToList()

答案 4 :(得分:1)

var bname = tds.Select( x=> x.buildingName).ToList() ;

编辑:我在通勤上班时没有看到内心的foreach,确实是

var bname = tds.SelectMany(x=> x.BuildingName).ToList();

答案 5 :(得分:0)

使用query-syntax:

List<string> bname =
  (from building in tds
  from x in building.BuildingName
  select x)
  .ToList()