具有重复键的对象列表将字段组合到逗号列表中

Posted

技术标签:

【中文标题】具有重复键的对象列表将字段组合到逗号列表中【英文标题】:List of objects with duplicate keys combine field into comma list 【发布时间】:2020-11-29 09:41:14 【问题描述】:

我有一个 Linq To SQL 结果,它是一个代表人员的对象列表。如果工作人员在多个地点注册,则存在重复的工作人员记录。在有多个员工记录的情况下,我需要在“位置”中用逗号分隔这些位置,以便我现在拥有一个员工记录。 这是选择语句:

staff = query...
select new UserModel

   sourceId= stf.STAFF_GU,
   location = loc.LOCATION_GU.ToString(),
   userName = user.LOGIN_NAME,
   email = person.EMAIL
).ToList();

我不知道如何获得每个用户有一行的最终列表,并且位置是该用户位置的逗号列表。

我从 article 尝试了 JonSkeet 的解决方案,但我不知道如何将位置组转换为字符串列表。

var merged = staff.GroupBy(x => x.sourceId)
                 .Select(g => new UserModel
                 
                     sourceId = g.Key,
                     userName = g.First().userName,
                     location = g.**DO_WHAT_TO_COMBINE_LOCATIONS**(x => x.location),
                     email = g.First().email
                 );

【问题讨论】:

【参考方案1】:

你可以使用string.Join() 方法大概喜欢

location = string.Join(",",g.Select(x => x.location))

【讨论】:

天哪。谢谢你。

以上是关于具有重复键的对象列表将字段组合到逗号列表中的主要内容,如果未能解决你的问题,请参考以下文章

根据具有不同对象的匹配字段从数组列表中删除重复元素

已添加具有相同键的项-查询中没有重复列

如何通过多列理想地组合具有不同主键的两个表 HASH

如何在映射到Spring配置类列表中的环境变量中转义逗号

熊猫将具有相同索引的一列值组合到列表中[重复]

如何迭代在jstl中将地图作为字段的对象列表? [重复]