这常常出现。我有一个List,我想转到逗号分隔的列表,列出了我可以在SQL中使用的所有元素。
在C#中执行此操作的最优雅方法是什么?迭代所有这些都很好,除了第一个或最后一个元素必须是特殊的,因为我不想要前导或尾随逗号。
有一个好的单行?
答案 0 :(得分:28)
string.Join是你的朋友......
var list = new List<long> {1, 2, 3, 4};
var commaSeparated = string.Join(",", list);
答案 1 :(得分:13)
List<long> items = // init here
string result = string.Join(", ", items.Select(i => i.ToString()).ToArray());
不确定它是否是最优雅的方式,但它是1个衬垫!
现在还有一个string.Join
接受了IEnumerable<T>
,所以它变得更短了:
string result = string.Join(", ", items);
感谢类型推断,您无需指定Join<long>
答案 2 :(得分:3)
string.Join(",", Array.ConvertAll(list.ToArray(), item => item.ToString()));
(直接写入帖子,所以我可能有一些参数错误,但你明白了)
答案 3 :(得分:2)
如果您是手动执行此操作,则不应该对第一个和最后一个值都有特殊情况,而是可以执行此操作:
List<long> junk = // have some values here;
string separator = string.Empty;
string list = string.Empty;
foreach(long john in junk)
{
list += separator + john.ToString();
separator = ", ";
}
不是说你应该这样做,只是将其视为评论。
答案 4 :(得分:2)
// Content IDs
List<long> cIds = new List<long>();
cIds.Add(1);
cIds.Add(2);
cIds.Add(1);
cIds.Add(3);
cIds.Add(3);
string ids = string.Join(",", cIds.Distinct().Select(x => x.ToString()).ToArray());
// The example return the following output:
// ids = "1,2,3"
返回以逗号分隔的唯一项目列表。
答案 5 :(得分:1)
public static string CommaSeparate(this IEnumerable<string> values)
{
if (values.Count() == 0) return "[none]";
return string.Join(", ", values.ToArray());
}
这是我在我的应用程序中执行此操作的扩展方法。它基于IEnumerable,但对于List应该是类似的。
答案 6 :(得分:0)
我相信String.Join会这样做。
答案 7 :(得分:0)
List<long> list =new List<long>(){1,2,3,4,5,6,7};
StringBuilder str =new StringBuilder();
foreach(var i in list)
{
str.Append(i).Append(',');
}
这会将(stringBuilder)str中的long值附加为
答案:str = 1,2,3,4,5,6,7