Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 写列表<;KeyValuePair<;字符串,列表<;字符串>&燃气轮机&燃气轮机;到文本文件?_C#_Linq_File_List_Dictionary - Fatal编程技术网

C# 写列表<;KeyValuePair<;字符串,列表<;字符串>&燃气轮机&燃气轮机;到文本文件?

C# 写列表<;KeyValuePair<;字符串,列表<;字符串>&燃气轮机&燃气轮机;到文本文件?,c#,linq,file,list,dictionary,C#,Linq,File,List,Dictionary,我想知道是否有人知道写这篇文章的好方法。我有一个键值对列表。键是一个简单字符串,值是一个字符串列表。我试图将其写入输出文件,如下所示: File.WriteAllLines(@"C:\Users\S\Downloads\output.txt", xEleAtt.Select(x => x.Key + " Val's: " + x.Value).ToArray()); 然而,我得到的结果(这是我认为会发生的)是: Queue0 Val's:Syste

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

        File.WriteAllLines(@"C:\Users\S\Downloads\output.txt",
            xEleAtt.Select(x => x.Key + " Val's: " + x.Value).ToArray());
然而,我得到的结果(这是我认为会发生的)是:

Queue0 Val's:System.Collections.Generic.List`1[System.String]

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

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

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

您可以使用指定的分隔符将
列表
连接到单个
字符串

File.WriteAllLines(@"C:\Users\S\Downloads\output.txt",
        xEleAtt.Select(x => x.Key + " Val's: " + 
        string.Join(",", x.Value.ToArray()).ToArray());
您可以使用将您的
列表
连接成一个带有给定分隔符的
字符串

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

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

File.WriteAllLines(@"C:\Users\S\Downloads\output.txt",
    from kvp in input
    select kvp.Key + ": " + string.Join(", ", kvp.Value));
注意:我不确定是否要将
列表中的所有字符串连接起来
以生成每个条目的值。如果需要,请参考道格拉斯的答案


注意:我不确定是否要将
列表中的所有字符串连接起来
以生成每个条目的值。如果您愿意,请参考道格拉斯的答案。如果您使用的是.NET 4.0或更高版本.Nice,则不需要调用
ToArray
。我试试看。我知道在这种情况下会用逗号分隔,但如果我想用新行分隔它们,我可以用Environment.NewLine吗?@SuzanAydın:当然可以。只需将
string.Join(“,”,…
替换为
string.Join即可(Environment.NewLine,
。如果您希望在每行开头重复
键的值,请使用King's Response.+1。如果您使用的是.NET 4.0或更高版本,
ToArray
调用是不必要的。很好。我会尝试一下。我知道在这种情况下,它会用逗号分隔它们,但如果我愿意的话被新行隔开我可以使用Environment.NewLine吗?@SuzanAydın:当然可以。只要用
string.Join(“,”,…
)替换
string.Join(Environment.NewLine,…
)就可以了。如果你想在每行的开头重复
键的值,请使用King的答案。