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

在C#中用LINQ合并相同ID的JSON行并合并HORAIRE列

解决合并相同ID员工的HORAIRE数组问题

你已经找对方向啦!GroupBy(l => l.ID) 这一步是正确的,接下来只需要在 Select 里处理每个分组,提取共享字段并合并 HORAIRE 数组即可。

假设你的 EMPLOY 类定义如下(如果没有实体类,也可以用匿名类型实现):

public class EMPLOY
{
    public string ID { get; set; }
    public string PRENOM { get; set; }
    public string NOM { get; set; }
    public List<int> HORAIRE { get; set; }
}

完整的实现代码如下:

var result = employee
    .GroupBy(l => l.ID)
    .Select(d => new EMPLOY
    {
        ID = d.Key,
        // 假设同一ID下的PRENOM和NOM值一致,直接取分组内第一个元素的对应值
        PRENOM = d.First().PRENOM,
        NOM = d.First().NOM,
        // 用SelectMany把分组里所有HORAIRE数组扁平合并为一个序列,再转成List
        HORAIRE = d.SelectMany(x => x.HORAIRE).ToList()
    })
    .ToList();

关键逻辑说明:

  • GroupBy(l => l.ID):将员工列表按ID分组,每个分组包含所有同ID的员工对象。
  • d.First().PRENOM/d.First().NOM:基于你的示例场景,同ID员工的这两个字段值相同,所以直接取分组内第一个元素的值即可。如果实际业务中存在同ID但字段值不同的情况,你需要额外处理(比如保留第一个、合并内容或抛出异常)。
  • SelectMany(x => x.HORAIRE):这是合并数组的核心,它会把分组中每个员工的HORAIRE数组拆分成单个元素,再拼接成一个新的序列,最后转成List类型。

这样处理后,就能得到你想要的合并结果啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:55:54