【问题标题】:Write List<KeyValuePair<string, List<string>>> to text file?将 List<KeyValuePair<string, List<string>>> 写入文本文件?
【发布时间】:2013-09-29 12:53:30
【问题描述】:

我想知道是否有人知道写这个的好方法。我有一个键值对列表。键是一个简单的字符串,值是一个字符串列表。我正在尝试将其写入输出文件,如下所示:

        File.WriteAllLines(@"C:\Users\S\Downloads\output.txt",
            xEleAtt.Select(x => x.Key + " Val's: " + x.Value).ToArray());

但是我得到的输出(这有点像我认为会发生的)是这样的:

Queue0 值:System.Collections.Generic.List`1[System.String]

Queue1 Val 的:System.Collections.Generic.List`1[System.String]

Queue2 Val 的:System.Collections.Generic.List`1[System.String]

有没有人知道如何使用我编写的 linq 打印列表的内容?

【问题讨论】:

    标签: c# linq file list dictionary


    【解决方案1】:

    您可以使用String.Join 将您的List&lt;string&gt; 连接成一个带有给定分隔符的string

    File.WriteAllLines(@"C:\Users\S\Downloads\output.txt",
            xEleAtt.Select(x => x.Key + " Val's: " + 
            string.Join(",", x.Value.ToArray()).ToArray());
    

    【讨论】:

    • +1。如果您使用的是 .NET 4.0 或更高版本,则不需要 ToArray 调用。
    • 不错。我会试一试。我知道在这种情况下它会用逗号分隔它们,但如果我希望它们用新行分隔,我可以以某种方式使用 Environment.NewLine 吗?
    • @SuzanAydın:当然。只需将string.Join(",", ... 替换为string.Join(Environment.NewLine, ...。如果您希望在每行的开头重复 Key 的值,请使用 King King 的答案。
    【解决方案2】:

    试试这个:

    File.WriteAllLines(@"C:\Users\S\Downloads\output.txt",
        from kvp in input
        select kvp.Key + ": " + string.Join(", ", kvp.Value));
    

    【讨论】:

      【解决方案3】:
      File.WriteAllLines(@"C:\Users\S\Downloads\output.txt",
               xEleAlt.SelectMany(x=> x.Value, (x,y)=> x.Key + " Val's: " + y).ToArray());
      
      //Result
      Queue0  ....
      Queue0  ....
      ......
      Queue1  ....
      Queue1  ....
      ....
      

      注意:我不确定您是否要加入 List&lt;string&gt; 中的所有字符串以生成每个条目的值。如果你愿意,请参考Douglas的答案

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-21
        • 2013-07-01
        • 2010-12-20
        • 1970-01-01
        相关资源
        最近更新 更多