[英]Best way to write Dynamic Query with dynamic result with Linq or Expression Tree
[英]Best way to write this in Linq
我如何在LINQ中重构它。 我正在努力拥抱良好的编码习惯。 我的tds对象看起来像这样:tds-> BuildingName(List)-> buildingFloor(string)我用嵌套的foreach循环完成的工作是将buildingFloors读入一个列表中。
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()
调用.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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.