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

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

string strgroupids = "6";

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

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

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

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


当前回答

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

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

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

其他回答

sll的解决方案:最好是修剪字符串,以防在结尾有一些空白。

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

删除任何尾随逗号:

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

不过,这是反向的,您首先编写了添加逗号的代码。你应该使用string. join (",",g)代替,假设g是一个字符串[]。给它取个比g更好的名字!

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

MSDN:

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

字符串。Join更好,但如果你真的想要LINQ ForEach:

var strgroupids = string.Empty;

groupIds.ForEach(g =>
{
    if(strgroupids != string.Empty){
        strgroupids += ",";
    }

    strgroupids += g;
});

一些注意事项:

字符串。Join和foreach都比这种慢得多的方法好 不需要删除最后一个,因为它从未被追加 增量操作符(+=)用于向字符串追加操作 .ToString()是不必要的,因为它会在连接非字符串时自动调用 处理大字符串时,应该考虑使用StringBuilder,而不是连接字符串

这样做怎么样

strgroupids = string.Join( ",", groupIds );

干净多了。

它将在groupIds中的所有元素之间添加一个“,”,但不会在末尾添加“,”。