我需要将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);
}
答案 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)