在 Linq 中编写此内容的最佳方式
本文关键字:最佳 方式 Linq | 更新日期: 2023-09-27 18:31:07
如何在 LINQ 中重构它。我正在努力接受良好的编码实践。我的 tds 对象如下所示: tds -> 建筑物名称(列表) ->建筑物楼层(字符串)我使用嵌套的foreach循环完成的是将建筑物楼层读取到列表中。
List<string> bname = new List<string>();
foreach (var building in tds) {
foreach (var x in building.BuildingName) {
bname.Add(x);
}
}
你可以
用SelectMany
来做,这将使你的项目变平
List<string> bname = tds.SelectMany(b => b.BuildingName).ToList();
使用 Enumerable.SelectMany
扁平化列表,如下所示:
List<string> bname = tds.SelectMany(r=> r.BuildingName).ToList();
你要找的是SelectMany。
var bname = buildings.SelectMany(b => b.BuildingName);
请注意,如果您要使用 foreach 多次枚举结果,那么您可能希望 ToList() 它,因此您有一个硬列表,而不是每次枚举时都会执行的可枚举列表。
var bname = buildings.SelectMany(b => b.BuildingName).ToList();
我想是
这样的:
var bname = tds.SelectMany(x => x.BuildingName);
如果您需要列表,请在最后调用.ToList()
var bname = tds.Select( x=> x.buildingName).ToList() ;
编辑:我在上下班途中没有看到内心的foreach,确实是
var bname = tds.SelectMany(x=> x.BuildingName).ToList();
使用查询语法:
List<string> bname =
(from building in tds
from x in building.BuildingName
select x)
.ToList()