我在一个列表中检索了很多信息,链接到一个数据库,我想创建一个组的字符串,为连接到网站的人。

我用这个来测试,但它不是动态的,所以它真的很糟糕:

string strgroupids = "6";

我现在想用这个。但是返回的字符串是1 2 3 4 5,

groupIds.ForEach((g) =>
{
    strgroupids = strgroupids  + g.ToString() + ",";
    strgroupids.TrimEnd(',');
});

strgroupids.TrimEnd(new char[] { ',' });

我想删除5后面的,但这显然不行。


当前回答

string strgroupids = string.Empty;

groupIds.ForEach(g =>
{
    strgroupids = strgroupids + g.ToString() + ",";
});

strgroupids = strgroupids.Substring(0, strgroupids.Length - 1);

注意,在这里使用ForEach通常被认为是“错误的”(例如http://blogs.msdn.com/b/ericlippert/archive/2009/05/18/foreach-vs-foreach.aspx)

使用一些LINQ:

string strgroupids = groupIds.Aggregate(string.Empty, (p, q) => p + q + ',');
strgroupids = strgroupids.Substring(0, str1.Length - 1);

没有end-substringing:

string strgroupids = groupIds.Aggregate(string.Empty, (p, q) => (p != string.Empty ? p + "," + q : q.ToString()));

其他回答

该代码删除字符串中的最后一个字符

string myString = "Hello;";    
myString = myString.Remove(myString.Length-1);

输出

你好

在c# 8中引入了范围和索引,为我们提供了一个新的更简洁的解决方案:

strgroupids = strgroupids[..^1];

除了为每一项添加逗号之外,还可以使用String。加入:

var strgroupids = String.Join(",",  groupIds);

这将在数组中的每个元素之间添加分隔符(在本例中为“,”)。

strgroupids = strgroupids.Remove(strgroupids.Length - 1);

MSDN:

String.Remove (Int32): 从此字符串中删除从指定位置开始的所有字符 定位并继续到最后一个位置

没有“快速和肮脏”的方法来做到这一点。我通常这样做:

mystring= string.Concat(mystring.Take(mystring.Length-1));