我有一个带有列表项的复选框列表项。当我保存表单时,所选值应该保存到数据库中。 看我的逻辑。
string Type = null;
for (int i = 0; i < chbCourse.Items.Count; i++)
{
if (chbCourse.Items[i].Selected == true)
{
Type += chbCourse.Items[i].ToString() + ",";
}
}
它工作得很好,但因为&#34;,&#34;这是我在两个值之间放置它们彼此分开,但在最后一个项目中它也会附加&#34;,&#34; 。有没有办法删除最后的&#34;,&#34;或插入&#34;。&#34;最后&#34;,&#34;
这样做有什么逻辑吗?
答案 0 :(得分:4)
使用string.Join
和LINQ
加入所有选定的项目:
Type = string.Join(",",
chbCourse.Items.Cast<ListItem>().Where(x => x.Selected).Select(x => x.Text));
由于string.Join
仅在项之间添加了分隔符,因此不会在结尾添加额外的逗号。
(另外,在 ListItem
上调用 ToString()会显示类类型;您必须使用 {{ 1}} property。)
答案 1 :(得分:1)
void Main()
{
var a="1,2,3,";
a=a.TrimEnd(new [] {','});
Console.WriteLine (a); //1,2,3
}
答案 2 :(得分:1)
最简单的方法是使用String.Join
:
string Type = String.Join(",", chbCourse.Items);
如果&#34;。&#34;也是必需的
string Type = String.Concat(String.Join(",", chbCourse.Items),".");
答案 3 :(得分:1)
对所选项目执行此操作:
string Type = string.Join(",", CheckBoxList1.Items.Cast<ListItem>().Where(a=>a.Selected).Select(a => a.Text));
if (!string.IsNullOrEmpty(Type)) // To add '.' at end
Type = Type + ".";
答案 4 :(得分:0)
如果我想在最后一个角色上加点(&#34;。&#34;),那么我会这样做:
for (int i = 0; i < chbCourse.Items.Count; i++)
{
if (chbCourse.Items[i].Selected == true)
{
if (i == chbCourse.Items.Count - 1) Type += chbCourse.Items[i].ToString() + ".";
else
Type += chbCourse.Items[i].ToString() + ",";
}
}
答案 5 :(得分:0)
string Type = null;
for (int i = 0; i < chbCourse.Items.Count; i++)
{
if (chbCourse.Items[i].Selected == true)
{
Type += chbCourse.Items[i].ToString() + ",";
}
}
if(Type != null)
Type = Type.TrimEnd(',');
尽量不要使用类名作为变量名。
答案 6 :(得分:0)
怎么样
string Type = null;
type = String.Join(",",
chbCourse.Items.Where(Function(x) x => x.Selected)
.Select(Function(y) y => y.ToString()).ToArray);