Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 列表到C中逗号分隔的字符串_C#_String_List - Fatal编程技术网

C# 列表到C中逗号分隔的字符串

C# 列表到C中逗号分隔的字符串,c#,string,list,C#,String,List,这经常出现。我有一个列表,我想转到列表中可以在SQL中使用的所有元素的逗号分隔字符串 在C中最优雅的方法是什么?迭代所有元素都可以,除了第一个或最后一个元素必须是特殊大小写,因为我不需要前导或尾随逗号 有好的一行吗 List<long> items = // init here string result = string.Join(", ", items.Select(i => i.ToString()).ToArray()); 多亏了类型推断,您不需要指定Join,我相信

这经常出现。我有一个列表,我想转到列表中可以在SQL中使用的所有元素的逗号分隔字符串

在C中最优雅的方法是什么?迭代所有元素都可以,除了第一个或最后一个元素必须是特殊大小写,因为我不需要前导或尾随逗号

有好的一行吗

List<long> items = // init here
string result = string.Join(", ", items.Select(i => i.ToString()).ToArray());
多亏了类型推断,您不需要指定Join,我相信它可以做到这一点

string.Join(",", Array.ConvertAll(list.ToArray(), item => item.ToString()));

直接写在帖子里,所以我可能有几个参数弄错了,但你明白了这个想法。

string.Join是你的朋友

var list = new List<long> {1, 2, 3, 4};
var commaSeparated = string.Join(",", list);

这是一种扩展方法,我在应用程序中使用它来实现这一点。它基于IEnumerable,但对于List应该类似。

如果要手动执行此操作,则第一个值和最后一个值都不应该有特殊情况,相反,您可以执行以下操作:

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 = ", ";
}
不是说你应该这样做,只是把这当作一个评论

// 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"
返回以逗号分隔的唯一项的列表

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中的长值附加为


Ans:str=1,2,3,4,5,6,7

我相信这会导致语法错误-字符串。Join不会将列表作为第二个参数。@John Shedletsky:.NET Framework 4.0引入@dtb:似乎是.NET的一种新方法4@John-它编译并给了我预期的结果。正如etb提到的,有一个重载需要一个IEnumerable。它是在.NET4.5中引入的:有趣的是,我们开发人员现在抱怨被困在.NET3.5上。不久前还很震撼……这个问题的答案在不久前已经被标记为已被接受。如果您的答案确实添加了一些有用/有用的内容,最好只重新激活一个问题。首先,由于.ToArray,从列表中分配一个新数组,然后由于array.ConvertAll,再分配另一个数组。自.NET 4.0版Visual Studio 2010以来,有一个直接起作用的重载string.Join、、list。
// 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"
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(',');
}