首页 > 解决方案 > 使用 LINQ C# 将公共数据分组到新字符串中

问题描述

基本上,我有一个对象列表 - 包含这些字符串字段的事件:

Date:
Event_Name: 
Event_Time:
Event_Place:

当然,有些事件是在同一天发生的,这就是我的问题所在:

我想将共享相同日期(键)的事件分组在一起,并创建一个新字符串,该字符串将包含同一日期的所有事件。

例子:

前:

Object 1:

Date: 2020/11/27
Event_Name: Dinner
Event_Time: 5pm
Event_Place: Johhny’s

Object 2:

Date: 2020/11/27
Event_Name: Dentist
Event_Time: 11am
Event_Place: Street 15

分组后:

Object:

Date: 2020/11/27
Event_Name: Dinner Dentist
Event_Time: 5pm 11am
Event_Place: Johhny’s Street 15

我尝试使用 LINQ 对它们进行分组——这有效,但不是我想要的方式——它将它们组合在一起,但它没有将它们“保存”为一个字符串。

有什么办法可以做到吗?

标签: c#stringlinqgroup-by

解决方案


这应该有效:

var grpByDate = allEvents.GroupBy(e => e.Date).Select(e =>
new Event
{
  Date = e.Key,
  Event_Name = string.Join(" ", e.SelectMany(x => x.Event_Name)),
  Event_Time = string.Join(" ", e.SelectMany(x => x.Event_Time)),
  Event_Place = string.Join(" ", e.SelectMany(x => x.Event_Place)),
});

推荐阅读