加入列表和单个字符串
c#
为什么这个输入:
var list = new List<string>()
{
"a","b","c"
};
var out1 = string.Join(", ", list.Select(t => t));
var out2 = string.Join(", ", list.Select(t => t), "d");
Console.WriteLine("out1 = " + out1);
Console.WriteLine("out2 = " + out2);
给出输出:
out1 = a, b, c
out2 = System.Linq.Enumerable+WhereSelectListIterator`2[System.String,System.String], d
我不明白为什么我得到:
System.Linq.Enumerable+WhereSelectListIterator`2[System.String,System.String]
在out2。有任何想法吗?
回答
你的第二个例子是调用这个重载:
public static string Join(string? separator, params object?[] values);
所以你的第二个和第三个参数作为object[]这里传递:
var out2 = string.Join(", ", list.Select(t => t), "d");
string.Join在内部调用ToString()数组中的每个项目,因此输出。
如果要将单个字符串附加到列表中,可以使用Enumerable.Append:
var out2 = string.Join(", ", list.Append("d"));
这将称为此重载:
public static string Join(
string? separator, System.Collections.Generic.IEnumerable<string?> values);