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

LINQ查询为何返回IEnumerable<short>而非int?蛇形转驼峰时抛CS0029错误

问题原因
  • 错误码CS0029属于C#的类型不匹配编译错误,你标注的LINQ查询返回的是IEnumerable<int>类型的整数序列,无法直接赋值给int类型的firstWordIndex变量。
  • 你已经调用Split方法按照-和_分割字符串,分割后的strSplit数组中不存在值为-或_的元素,对应where过滤条件完全无效。
  • 过滤条件的逻辑运算符使用错误,即便要做排除判断也应该使用逻辑与&&而非逻辑或||,你当前写的s != "-" || s != "_"是恒成立的表达式。
  • 后续转换单词首字母大写时使用Replace方法存在逻辑漏洞:如果单词中存在多个和首字母相同的字符,所有匹配字符都会被替换为大写,不符合需求。
修正后的代码
using System;
using System.Linq;

public class Kata
{
    public static string ToCamelCase(string str)
    {
        if (string.IsNullOrEmpty(str))
            return str;
            
        string[] strSplit = str.Split(new char[] { '-', '_' }, StringSplitOptions.RemoveEmptyEntries);
        // 直接取第一个元素作为首单词,不需要额外查索引
        string firstWord = strSplit[0];
        // 剩余单词首字母大写,其余字符保留原样
        var restWords = strSplit.Skip(1)
                                .Select(s => char.ToUpper(s[0]) + s.Substring(1));
                                
        return string.Concat(firstWord, string.Join("", restWords));
    }
}
代码说明
  • 分割字符串时加入StringSplitOptions.RemoveEmptyEntries过滤分割产生的空字符串,适配开头就是分隔符的输入场景
  • 直接取分割后数组的第一个元素作为首单词,无需额外查询索引,避免LINQ序列转单值的错误
  • 转换剩余单词时仅将首字符转为大写,拼接剩余字符,避免Replace方法的误替换问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 14:48:02