【问题标题】:how to convert list to IEnumerable<string>?如何将列表转换为 IEnumerable<string>?
【发布时间】:2020-05-23 08:55:28
【问题描述】:

错误 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);
    }
}

【问题讨论】:

  • list(ofObject) 基本上是一个 IEnumerable(ofObject)。这不应该引起任何问题。你能在这里发布内部异常吗?
  • 方法File.AppendAllLines的第二个参数是IEnumerable,你的输入List不能隐式转换成IEnumerable
  • 这里似乎有多个问题。但是您没有提供足够的信息来给出完整的答案。你到底想达到什么目的? (看起来像是试图将您的 List&lt;ProgramInfo&gt; list 作为 json 写入文件?)。如上所述File.AppendAllLines 需要IEnumerable&lt;string&gt; 也需要File.AppendAllLines 不返回FileStream,因此它也不起作用(它返回void)。这样的事情可能会有所帮助:newtonsoft.com/json/help/html/…

标签: c# append filestream


【解决方案1】:

原因是变量列表不是字符串列表而是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 评论的那样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    • 2018-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多