如何将<Entities>的列表转换为一个包含分组的字符串?

我区的列表,它具有以下的列:如何将<Entities>的列表转换为一个包含分组的字符串?

Zone_id, ZoneName, BuildingName, CityName, RegionName 

现在我正在我的列表转换为字符串如下:

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

,其输出是这样的:

North-> New York-> Wall Street-> JbA,

North-> New york-> Wall Street-> JbB,

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

南 - >芝加哥 - > Aqua->部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());

按地址先将您的项目分组。这会给你IGrouping<string,string>。第一个是关键,其地址和第二个是该地址分组项目的列表。

回答:

你可以试试这个:

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)与当前元素的方法

以上是 如何将&lt;Entities&gt;的列表转换为一个包含分组的字符串? 的全部内容, 来源链接: utcz.com/qa/262672.html

回到顶部