我有以下声明
model.Activities = model.SelectedActivities.Aggregate(model.Activities, (current, activityId) => current + string.Format("({0}, {1}, {2}, null),", activityId, userId, DateTime.Now));
产生以下内容:
(1, 1, 05/04/2015 05:09:39, null),(2, 1, 05/04/2015 05:09:39, null),(3, 1, 05/04/2015 05:09:39, null),(5, 1, 05/04/2015 05:09:39, null),(8, 1, 05/04/2015 05:09:39, null),
正如你在最后看到的那样,有一个逗号,我试图通过执行以下操作来删除它:
var t = model.Activities.Substring(1, model.Activities.Length - 1);
但是该声明似乎没有删除最后一个逗号而是保持不变,我在这里做错了什么?
答案 0 :(得分:6)
不是添加,然后删除逗号,而是首先要避免使用它。这就是string.Join
的用途。
首先创建要加入的字符串集合:
IEnumerable<string> activities = model.SelectedActivities.Select(activityId =>
string.Format("({0}, {1}, {2}, null),", activityId, userId, DateTime.Now));
然后加入他们:
var modelActivities = string.Join(",", activities);
字符串连接可以接收任何IEnumerable(如果它们不是字符串,则调用ToString()并加入它们),并且特别适用于在最后一项之后关闭分隔符的这种非常流行的情况。
注意:此技术 遍历集合两次,一次进行字符串化,一次进行加入。如果这是一个巨大的集合,它可能是一个问题。但通常,它不会成为。
答案 1 :(得分:4)
使用TrimEnd(',');
管理删除它var t = model.Activities.TrimEnd(',');
答案 2 :(得分:2)
这条线不正确:
var t = model.Activities.Substring(1, model.Activities.Length - 1);
Substring使用基于零的索引。将其更改为此将解决问题:
var t = model.Activities.Substring(0, model.Activities.Length - 1);
答案 3 :(得分:0)
var t = model.Activities.Remove(model.Activities.Length - 1);
试试这个。容易,应该工作。