使用LINQ合并C#对象中字符串的问题求助
问题分析与解决方案
你的LINQ逻辑本身是正确的,但代码未生效大概率是因为原始数据中id或customer存在隐形差异(比如前后空格、大小写不一致),导致匿名类型分组键无法匹配。
修正后的代码
可以在分组前先对id和customer做标准化处理(去除前后空格、统一格式),确保分组键完全一致:
List<Model> data = JsonConvert.DeserializeObject<List<Model>>(json); List<Model> result = data // 先清理数据中的隐形空格,避免分组失败 .Select(x => new Model { id = x.id?.Trim() ?? string.Empty, customer = x.customer?.Trim() ?? string.Empty, sentence = x.sentence }) .GroupBy(x => new { x.id, x.customer }) .Select(g => new Model { id = g.Key.id, customer = g.Key.customer, sentence = string.Join(", ", g.Select(item => item.sentence)) }) .ToList();
额外场景处理
如果业务需要忽略大小写进行分组,可以修改分组键的处理逻辑:
.GroupBy(x => new { Id = x.id?.Trim().ToLowerInvariant() ?? string.Empty, Customer = x.customer?.Trim().ToLowerInvariant() ?? string.Empty })
最终生成Model时,可根据需求选择保留原始大小写或统一转换格式。
若确认数据无隐形差异,可先打印原始数据的id和customer值,排查JSON反序列化是否出现类型或格式异常。
内容的提问来源于stack exchange,提问作者Danny Verdel
相关产品推荐
相关产品推荐

