You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# 使用LINQ按Customer ID分组并合并同组的Emails子列表

实现代码

你可以在分组后直接合并同组所有Customer的Emails数组,再构造新的Customer对象即可,万级数据量下该方案性能完全满足每小时执行一次的要求,整体时间复杂度为O(n):

List<Customer> mergedCustomers = dataInput
    .GroupBy(customer => customer.Id)
    .Select(group => new Customer
    {
        Id = group.Key,
        // 不需要去重邮箱直接用这行
        Emails = group.SelectMany(item => item.Emails).ToArray()
        // 如果需要对同ID下的重复邮箱去重,替换为下面这行
        // Emails = group.SelectMany(item => item.Emails).Distinct().ToArray()
    })
    .ToList();

补充说明

  • 如果你需要复用分组后的第一个Customer实例而非新建对象,可以采用下面的写法,注意该写法会修改原始集合中对应实例的属性值,如果原始数据还有其他用途不推荐使用:
List<Customer> mergedCustomers = dataInput
    .GroupBy(customer => customer.Id)
    .Select(group => 
    {
        var firstCustomer = group.First();
        firstCustomer.Emails = group.SelectMany(item => item.Emails).ToArray();
        return firstCustomer;
    })
    .ToList();
  • 1万条规模的数据处理耗时在毫秒级,无需额外性能优化。

内容的提问来源于stack exchange,提问作者David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 13:24:06