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

.NET 3.1下Linq按条件生成新集合的问题求助

.NET 3.1 Linq 实现修正方案

问题回顾

需要实现函数Foo(IEnumerable<string>),满足以下需求:

  • 提取每个字符串的最后一个字符并转为大写,将这些字符拼接成字符串;
  • 按原字符串的长度分组,每组对应结果中的一个元素;
  • 最终结果按元素长度降序排列。

输入示例:new[] { "bc", "sd", "ac", "sdf", "ewr" }
预期输出:new[] { "CCD", "RF" }

错误代码问题分析

你的代码存在两个核心问题:

  • 变量名不匹配:函数参数是strCollection,但代码中使用了未定义的stringList,会导致编译错误;
  • 逻辑偏离需求:当前仅将分组的长度键反转后转为字符串,完全没有处理字符提取、大写转换及拼接的核心逻辑。

正确实现代码

IEnumerable<string> Foo(IEnumerable<string> strCollection)
{
    return strCollection
        // 按原字符串长度分组
        .GroupBy(str => str.Length)
        // 对每个分组,提取最后一个字符转大写并拼接
        .Select(group => string.Concat(group.Select(str => char.ToUpper(str.Last()))))
        // 按结果字符串长度降序排列
        .OrderByDescending(resultStr => resultStr.Length);
}

代码说明

  1. 分组:使用GroupBy按输入字符串的长度分组,直接满足按长度分组的需求;
  2. 字符处理与拼接:对每个分组,遍历其中的字符串,提取最后一个字符并转为大写,再通过string.Concat拼接成单个字符串;
  3. 排序:最后用OrderByDescending按结果字符串的长度降序排列,符合最终排序要求;
  4. 由于输入集合已按升序排列,分组内的元素会保留原顺序,因此拼接出的字符顺序与输入一致(对应示例中的"CCD"和"RF")。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 11:57:15