LINQ分组字符串并计算总长度:如何求和及格式化结果?
解决LINQ分组求和并格式化输出的问题
问题分析
你当前的LINQ查询仅提取了每组的首字母和单个字符串的长度,没有对组内长度求和,也未按要求格式拼接结果,所以输出不符合预期。
修改后的LINQ代码
var result = stringList .GroupBy(word => word[0]) // 按首字母分组 .Select(group => $"{group.Sum(word => word.Length)}-{group.Key}") // 计算组内总长度并格式化目标字符串 .OrderByDescending(s => s.Last()) // 按首字母降序排序,匹配示例输出顺序 .ToArray();
代码说明
GroupBy(word => word[0]):将字符串按首字母分组,得到以首字母为键、对应字符串集合为值的分组集合。Select(...):对每个分组,用Sum方法计算组内所有字符串的长度总和,再通过字符串插值拼接成"S-C"的格式。OrderByDescending(s => s.Last()):按结果字符串的最后一个字符(即原首字母)降序排序,保证示例中Y组在前、G组在后的顺序。ToArray():将最终结果转换为字符串数组,符合预期的输出类型。
测试验证
输入:
var stringList = new[] { "YELLOW", "GREEN", "YIELD" };
输出结果:
new[] { "11-Y", "5-G" }
内容的提问来源于stack exchange,提问作者Oana
相关产品推荐
相关产品推荐

