繁体   English   中英

用Linq编写此内容的最佳方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM