C# Lambda - 获取不同的 Id 并附加其他字段值

标签 c# linq lambda

我有一个 ID 和标题列表,如下所示:

    List<Event> events= new List<Event>();

    events.Add(new Event(){ Id= "1001", Title= "abc" });
    events.Add(new Event(){ Id= "1002", Title= "xyz" });
    events.Add(new Event(){ Id= "1001", Title= "hij" });
    events.Add(new Event(){ Id= "1002", Title= "opq" });
    events.Add(new Event(){ Id= "1003", Title= "efg" });

在这里,我想使用 C# lambda 表达式

针对这些 ID 获取不同的 Id逗号分隔的标题

预期结果:

[
    {Id: 1001,Title : "abc,hij"},
    {Id: 1002,Title : "xyz,opq"},
    {Id: 1003,Title : "efg"},
]

能否请您告诉我如何使用 C# Lambda 表达式 实现此目的。提前致谢

最佳答案

您可以使用GroupBy + String.Join

var query = events.GroupBy(x => x.Id)
    .Select(g => new Event 
     { 
         Id = g.Key, 
         Title = String.Join(",", g.Select(x => x.Title)) 
     });

如果你想要一个新的列表附加.ToList()

关于C# Lambda - 获取不同的 Id 并附加其他字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29913031/

相关文章:

c# - Entity Framework 快照历史

c# - 更改进程的基址指针

c# - 如何理解以下实现算法的 C# linq 代码以返回 n 中 k 元素的所有组合

java - 如何从 EJB 捕获运行时异常?

java - PMD:如何仅忽略 lambda 表达式中的短变量名

c# - 不使用资源文件的多语言网站解决方案

c# - 以 Azure Blob 存储 block 上传视频

c# - 如何使用 LINQ 获取数组中最大值的索引?

linq - LINQ OrderBy不订购..什么都没有改变..为什么?

java - 是否可以通过.forEach方法列出文件特征?