StringBuilder sbOccupation = new StringBuilder();
foreach (ListItem li in cblOccupation.Items)
{
if (li.Selected)
{
sbOccupation.Append(li.Text);
sbOccupation.Append(",");
}
}
property.Occupation=sbOccupation.ToString().Remove(sbOccupation.ToString().LastIndexOf(","), 1);
答案 0 :(得分:2)
如果没有选中复选框,则
li.Selected
对每个
li in cblOccupation.Items
,然后
.LastIndexOf(","), 1)
自
sbOccupation.Append(",");
从未发生过。
答案 1 :(得分:1)
如果sbOccuption
没有附加任何内容,那么它将为空 - 因此LastIndexOf(',')
将返回-1,这不是string.Remove
的第一个参数。
鉴于您知道它始终是结果的最后一个字符,您可以使用:
if (sbOccuptation.Length > 0)
{
// Trim the trailing comma
sbOccupation--;
}
string text = sbOccupation.ToString();
但是,使用string.Join
和LINQ:
// This replaces *all* your code
property.Occupation = string.Join(",", cblOccuptation.Items
.Cast<ListItem>()
.Where(li => li.Selected)
.Select(li => li.Text));
如果您使用的是.NET 3.5,则在ToArray
来电之后,您需要拨打Select
,但这很简单。