foreach循环问题

atr*_*joe 1 c# foreach

还有其他更短/更有效的方法来检查它是否是我的ListBox中的最后一项?这里的主要目标基本上是将所选项添加到标签中,并在每一个之后添加一个逗号,但最后一个.有什么建议?

        int sc = 0;
        List<string> interestitems = new List<string>();

        foreach (ListItem siitem in ListBox1.Items)
        {
            if (siitem.Selected == true)
            {
               interestitems.Add(siitem.Value.ToString());
            }
        }

        foreach (string inteitem in interestitems)
        {
            Label1.Text += inteitem;
            sc++;
            if (sc < interestitems.Count)
            {
                Label1.Text += ",";
            }
        }
Run Code Online (Sandbox Code Playgroud)

dig*_*All 11

而不是你的第二个循环只使用:

Label1.Text = string.Join("," , interestitems);
Run Code Online (Sandbox Code Playgroud)

PS

如果你使用.net 3.5,你需要传递一个字符串数组string.Join(),然后:

Label1.Text = string.Join("," , interestitems.ToArray());
Run Code Online (Sandbox Code Playgroud)

编辑:

如果你想完全避免循环,只需:

var selItems = ListBox1.Items.Cast<ListItem>()
                       .Where(item => item.Selected)
                       .Select(item => item.ToString());

Label1.Text = string.Join("," , selItems);
Run Code Online (Sandbox Code Playgroud)