C# 如何将列表转换为一个分组字符串?

C# 如何将列表转换为一个分组字符串?,c#,asp.net,entity-framework,linq,list,C#,Asp.net,Entity Framework,Linq,List,我有一个区域列表,其中包含以下列: Zone_id, ZoneName, BuildingName, CityName, RegionName 现在,我将列表转换为字符串,如下所示: var result = string.Join(", ", lstOfZones.Select(z => z.RegionName + "->" + z.CityName + "->" + z.BuildingName + "->" + z.ZoneName).ToArray());

我有一个区域列表,其中包含以下列:

Zone_id, ZoneName, BuildingName, CityName, RegionName
现在,我将列表转换为字符串,如下所示:

var result = string.Join(", ", lstOfZones.Select(z => z.RegionName + "->" + z.CityName + "->" + z.BuildingName + "->" + z.ZoneName).ToArray());
其输出如下:

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

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

南部->芝加哥->水族->HcA

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

但我想要这样的输出:

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

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

请帮忙?

你必须这样做

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());
首先按地址对项目进行分组。这将为您提供i分组。第一个是键及其地址,第二个是按地址分组的项目列表。

您必须这样做

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());
首先按地址对项目进行分组。这将为您提供i分组。第一个是键及其地址,第二个是按地址分组的项目列表。

您可以尝试以下方法:

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();
在聚合方法中,第一个参数将种子开始值设置为String.Empty。第二个参数定义将当前种子值字符串与当前元素连接起来的方法。您可以尝试以下操作:

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();

在聚合方法中,第一个参数将种子开始值设置为String.Empty。第二个参数定义了将当前种子值字符串和当前元素连接起来的方法,这非常快。恢复了对斯塔克的信任@元编码器-你可以接受它作为答案,如果这有助于你。检查这个-这是非常快的。恢复了对斯塔克的信任@元编码器-你可以接受它作为答案,如果这有助于你。检查这个-