如何在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);
}
}
答案 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()