首页 > 解决方案 > 如何将列表转换为 IEnumerable?

问题描述

错误CS1503 参数 2:无法从 'System.Collections.Generic.List' 转换为 'System.Collections.Generic.IEnumerable

public async System.Threading.Tasks.Task SerializeAsync(List<ProgrammInfo> list)
{
    using (FileStream fs = File.AppendAllLines("save3.json", list))
    {
        var options = new JsonSerializerOptions
        {
            WriteIndented = true
        };
        await JsonSerializer.SerializeAsync(fs, list, options);
    }
}

标签: c#appendfilestream

解决方案


原因是变量列表不是字符串列表而是 ProgramInfo 列表。通过使用 Linq,您可以像这样更改代码:

        public async System.Threading.Tasks.Task SerializeAsync(List<ProgrammInfo> list)
        {

            var stringList = list.Select(x => x.ToString());

            using (FileStream fs = File.AppendAllLines("save3.json", stringList))
...

但是我无法让代码运行,因为 AppendAllLines 返回 void ...并且将对象序列化为 json 并将其写入文件可以更容易完成,正如 Knoop 评论的那样。


推荐阅读