在复选框列表的选定项目值之后附加“。”

时间:2014-04-09 11:34:06

标签: c# asp.net

我有一个带有列表项的复选框列表项。当我保存表单时,所选值应该保存到数据库中。 看我的逻辑。

    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;

这样做有什么逻辑吗?

7 个答案:

答案 0 :(得分:4)

使用string.JoinLINQ加入所有选定的项目:

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);