从LINQ中的字符串列表中创建CSV

Cmd*_*len 19 linq csv

嗨,我想采取列表集合并生成一个单独的csv行.所以拿这个;

List<string> MakeStrings()
{
    List<string> results = new List<string>();
    results.add("Bob");
    results.add("Nancy");
    results.add("Joe");
    results.add("Jack");
    return results;       
}


string ContactStringsTogether(List<string> parts)
{
    StringBuilder sb = new StringBuilder();

    foreach (string part in parts)
    {
        if (sb.Length > 0)
            sb.Append(", ");

        sb.Append(part);
     }
     return sb.ToString();
}
Run Code Online (Sandbox Code Playgroud)

这将返回"Bob,Nancy,Joe,Jack"

寻求LINQ的帮助,在单个语句中执行此操作.谢谢!

Eri*_*ser 28

LINQ没有任何一个衬里可以做到这一点.请注意,您可以使用Aggregate方法执行此操作,但您将使用字符串连接而不是StringBuilder.如果您经常这样做,我会考虑为此添加一个扩展方法:

    public static string ToCsv<T>(this IEnumerable<T> source)
    {
        if (source == null) throw new ArgumentNullException("source");
        return string.Join(",", source.Select(s => s.ToString()).ToArray());
    }
Run Code Online (Sandbox Code Playgroud)


Dar*_*rov 10

var csv = string.Join(",", MakeStrings().ToArray());
Run Code Online (Sandbox Code Playgroud)

我个人建议你使用一个真正的CSV解析器,而不是试图做一个如果您的值包含逗号的内容将会中断.您可以阅读有关滚动自己的CSV解析器的这篇文章.

  • string str = string.Join(",",MakeStrings()); (2认同)