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

C# 如何返回IEnumerable<'a>类型对象及解决CS0266编译报错

错误原因

你遇到的CS0266报错核心是类型不匹配:方法声明的返回值类型为IEnumerable<Phone>,但你通过LINQ分组后生成的是包含品牌名+对应手机列表的匿名类集合,二者无法隐式转换。

解决步骤

你需要先定义一个承载分组嵌套结构的实体类,再修改方法返回类型即可:

1. 新增分组实体类

// 存储按品牌分组后的嵌套数据
class BrandGroup
{
    public string BrandName { get; set; }
    public IEnumerable<Phone> Phones { get; set; }
}

2. 修改完整业务代码

class Phone
{
    public string Name { get; set; }
    public string Company { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        // 修改返回类型为BrandGroup的集合
        IEnumerable<BrandGroup> GetInfo()
        {
            List<Phone> phones = new List<Phone>()
            {
                new Phone {Name="Lumia 430", Company="Microsoft" },
                new Phone {Name="Mi 5", Company="Xiaomi" },
                new Phone {Name="LG G 3", Company="LG" },
                new Phone {Name="iPhone 5", Company="Apple" },
                new Phone {Name="Lumia 930", Company="Microsoft" },
                new Phone {Name="iPhone 6", Company="Apple" },
                new Phone {Name="Lumia 630", Company="Microsoft" },
                new Phone {Name="LG G 4", Company="LG" }
            };

            var result = from phone in phones
                         group phone by phone.Company into g
                         // 不再生成匿名类,直接实例化BrandGroup
                         select new BrandGroup
                         {
                             BrandName = g.Key,
                             Phones = g.Select(p => p)
                         };

            return result;
        }

        // 调用示例,输出你需要的嵌套格式
        var data = GetInfo();
        int brandIndex = 0;
        foreach (var brand in data)
        {
            Console.WriteLine($"[{brandIndex}] {brand.BrandName}");
            Console.WriteLine("{");
            int phoneIndex = 0;
            foreach (var phone in brand.Phones)
            {
                Console.WriteLine($"  [{phoneIndex}].{phone.Name}");
                phoneIndex++;
            }
            Console.WriteLine("}");
            brandIndex++;
        }
    }
}

运行以上代码就能得到你示例中的嵌套列表输出效果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:24:05