使用分隔符将List <List <String >>连接为单个字符串

时间:2019-10-06 23:10:24

标签: c# linq

我需要将List<List<String>>连接到一个字符串中,其中每个内部List<String>", "作为分隔符进行连接,但是整个连接的字符串都包含在"("中,并且")"。然后,所有这些连接的字符串都以", "作为分隔符连接在一起。

我知道如何使用简单的foreach来执行此操作,但是我正在寻找使用LINQ来执行此操作的方法。

private String MyMethod(List<List<String>> listOfListOfvalues)
{
    // Input =>
    //
    //    List<List<String>> listOfListOfvalues = new List<List<String>>();
    //    listOfListOfvalues.Add(new List<String>() { "a", "b", "c", "d" });
    //    listOfListOfvalues.Add(new List<String>() { "A", "B", "C" });
    //    listOfListOfvalues.Add(new List<String>() { "1", "2", "3", "4", "5" });
    //
    // Desired output of the method =>
    // 
    //    "(a, b, c, d), (A, B, C), (1, 2, 3, 4, 5)"

    List<String> listOfJoinedValues = new List<String>();
    foreach (List<String> ListOfvalues in listOfListOfvalues)
    {
        listOfJoinedValues.Add("(" + String.Join(", ", ListOfvalues) + ")");
    }
    return String.Join(", ", listOfJoinedValues);
}

1 个答案:

答案 0 :(得分:5)

您可以使用Select LINQ方法来形成用括号括起来的内部联接字符串,然后联接结果IEnumerable<string>

string.Join(", ", listOfListOfvalues.Select(l => "(" + string.Join(", ", l) + ")"));

完整示例:

List<List<string>> listOfListOfvalues = new List<List<string>>();
listOfListOfvalues.Add(new List<string>() { "a", "b", "c", "d" });
listOfListOfvalues.Add(new List<string>() { "A", "B", "C" });
listOfListOfvalues.Add(new List<string>() { "1", "2", "3", "4", "5" });

string joined = 
    string.Join(", ", listOfListOfvalues.Select(l => "(" + string.Join(", ", l) + ")"));
Console.WriteLine(joined);
// Prints: (a, b, c, d), (A, B, C), (1, 2, 3, 4, 5)