【问题标题】:How to convert List of <Entities> to one string with grouping?如何通过分组将 <Entities> 列表转换为一个字符串?
【发布时间】:2016-01-19 02:05:50
【问题描述】:

我有一个包含以下列的区域列表:

Zone_id, ZoneName, BuildingName, CityName, RegionName

现在我将列表转换为字符串,如下所示:

var result = string.Join(", ", lstOfZones.Select(z => z.RegionName + "->" + z.CityName + "->" + z.BuildingName + "->" + z.ZoneName).ToArray());

它的输出是这样的:

北->纽约->华尔街->JbA,

北->纽约->华尔街->JbB,

南->芝加哥->Aqua->HcA,

南->芝加哥->水族->HcB

但我想要这样的输出:

北->纽约->华尔街->(JbA,JbB),

南->芝加哥->水族->(HcA,HcB)

请帮忙?

【问题讨论】:

    标签: c# asp.net entity-framework linq list


    【解决方案1】:

    你必须这样做。

    var result = string.Join(", ",  
                 lstOfZones.GroupBy(z => 
                     string.Format("{0}->{1}->{2}->",
                         z.RegionName, z.CityName, z.BuildingName))
                 .Select(z => string.Format("{0}({1})", 
                                  z.Key, string.Join(", ", z.Select(x => x.ZoneName).ToArray())))
                 .ToArray());
    

    首先按地址对您的项目进行分组。这会给你IGrouping&lt;string,string&gt;。第一个是键及其地址,第二个是按该地址分组的项目列表。

    【讨论】:

    【解决方案2】:

    你可以试试这个:

    var result lstOfZones.GroupBy(z => z.RegionName + "->" + z.CityName + "->" + z.BuildingName)
                         .Select(g=>g.Key+ "->("+ g.Agregate(String.Empty,(a,z)=>a + "," +z.ZoneName) +")")
                         .ToArray();
    

    Aggregate 方法中,第一个参数将种子起始值设置为String.Empty。第二个参数定义将当前种子值(string)与当前元素连接的方法

    【讨论】:

      猜你喜欢
      • 2021-06-27
      • 1970-01-01
      • 2023-01-02
      • 1970-01-01
      • 2020-02-18
      • 2020-08-19
      • 2011-07-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多