在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
相关产品推荐
相关产品推荐

