C# 如何修改asp:listbox中的选定项以在适当的字符串中使用?

C# 如何修改asp:listbox中的选定项以在适当的字符串中使用?,c#,asp.net,C#,Asp.net,假设我想创建一个应用程序,供用户选择有问题的部门进行报告。用户将进入并从asp:ListBox中选择多个故障部门,当用户点击send时,电子邮件将显示: 我们在以下部门遇到了麻烦:A部门,B部门 我所能做的是找出如何正确地从循环中循环出项目,但是最后一个项目在最后一个项目的末尾有一个。例如,与上面提到的正确阅读方式不同,它看起来是这样的: 我们在以下部门遇到了问题:部门A,部门B 这是我的密码: string DeptID = string.Empty; foreach (ListItem li

假设我想创建一个应用程序,供用户选择有问题的部门进行报告。用户将进入并从asp:ListBox中选择多个故障部门,当用户点击send时,电子邮件将显示:

我们在以下部门遇到了麻烦:A部门,B部门

我所能做的是找出如何正确地从循环中循环出项目,但是最后一个项目在最后一个项目的末尾有一个。例如,与上面提到的正确阅读方式不同,它看起来是这样的:

我们在以下部门遇到了问题:部门A,部门B

这是我的密码:

string DeptID = string.Empty;
foreach (ListItem li in lstDSXDepartment.Items)
{
    if (li.Selected == true)
    {
        DeptID += li.Value + ",";
    }
}

Response.Write("We are having trouble with the following Departments: " + DeptID + ".");

如何修复字符串,使逗号不会显示在选择列表的末尾

只需使用修剪函数删除不需要的逗号即可

DeptID = DeptID.TrimEnd(',');
在循环之后、写入之前使用


注意:TrimEnd函数返回一个修改了原始字符串的新副本,因此必须将其存储回原始变量中。这是因为字符串在C中是不可变的。

只需使用修剪函数删除不需要的逗号即可

DeptID = DeptID.TrimEnd(',');
在循环之后、写入之前使用

注意:TrimEnd函数返回一个修改了原始字符串的新副本,因此必须将其存储回原始变量中。这是因为字符串在C中是不可变的。

您可以使用。这要容易得多

var ids = lstDSXDepartment.Items
    .Cast<ListItem>()
    .Where(x=> x.Selected)
    .Select(x=> x.Value);
string text = string.Join(",", ids);
其他想法:

如果您想使用原始方法,则应考虑使用而不是字符串,因为字符串是不可变的。 StringBuilder将根据项目的数量显著提高性能。

您可以使用。这要容易得多

var ids = lstDSXDepartment.Items
    .Cast<ListItem>()
    .Where(x=> x.Selected)
    .Select(x=> x.Value);
string text = string.Join(",", ids);
其他想法:

如果您想使用原始方法,则应考虑使用而不是字符串,因为字符串是不可变的。


StringBuilder将根据项目的数量显著提高性能。

您可以在循环完成后将字符串中的最后一个字符修剪掉。唉,修剪修复了另一个简单的问题:您可以在循环完成后将字符串中的最后一个字符修剪掉。唉,Trim修复了另一个简单的问题:为什么我没有想到:为什么我没有想到: