从IList<string>或IEnumerable<string>创建逗号分隔的字符串值列表的最干净的方法是什么?
string . join(…)操作在字符串[]上,因此当IList<string>或IEnumerable<string>等类型不能轻松转换为字符串数组时,处理起来很麻烦。
从IList<string>或IEnumerable<string>创建逗号分隔的字符串值列表的最干净的方法是什么?
string . join(…)操作在字符串[]上,因此当IList<string>或IEnumerable<string>等类型不能轻松转换为字符串数组时,处理起来很麻烦。
当前回答
你可以在列表和IEnumerables上使用. toarray(),然后根据需要使用String.Join()。
其他回答
希望这是最简单的方法
string Commaseplist;
string[] itemList = { "Test1", "Test2", "Test3" };
Commaseplist = string.join(",",itemList);
Console.WriteLine(Commaseplist); //Outputs Test1,Test2,Test3
这是另一个扩展方法:
public static string Join(this IEnumerable<string> source, string separator)
{
return string.Join(separator, source);
}
由于我在搜索对象列表的特定属性(而不是ToString())时到达这里,这里是对接受的答案的补充:
var commaDelimited = string.Join(",", students.Where(i => i.Category == studentCategory)
.Select(i => i.FirstName));
我认为创建逗号分隔的字符串值列表的最简单的方法是:
string.Join<string>(",", stringEnumerable);
下面是一个完整的例子:
IEnumerable<string> stringEnumerable= new List<string>();
stringList.Add("Comma");
stringList.Add("Separated");
string.Join<string>(",", stringEnumerable);
不需要创建helper函数,这是在。net 4.0及以上版本中内置的。
在阅读本文之前,我刚刚解决了这个问题。我的解决方案如下:
private static string GetSeparator<T>(IList<T> list, T item)
{
return (list.IndexOf(item) == list.Count - 1) ? "" : ", ";
}
被称为:
List<thing> myThings;
string tidyString;
foreach (var thing in myThings)
{
tidyString += string.format("Thing {0} is a {1}", thing.id, thing.name) + GetSeparator(myThings, thing);
}
我也可以这样简单地表达,也会更有效率:
string.Join(“,”, myThings.Select(t => string.format(“Thing {0} is a {1}”, t.id, t.name));