我有一个checkedlistBox cblHobbies
StringBuilder hobbies = new StringBuilder(string.Empty);
foreach (ListItem li in cblHobbies.Items) {
if (li.Selected) {
hobbies.Append(li).Append(", ");
}
}
string hobby = hobbies.ToString().TrimEnd(' ').TrimEnd(',');
我将业余爱好存储在SQL Server数据库中作为Varchar(MAX)。
当用户编辑他的个人资料时,我希望所有的爱好都已被选中。
我的问题是如何从逗号分隔列表有效中选择checklistbox项目? (关于迭代次数)
答案 0 :(得分:3)
总结我的评论:
您可以使用以下可读的单行代码而不是StringBuilder
- 循环:
string hobby = String.Join(", ", cblHobbies.Items.Cast<ListItem>()
.Where(i=> i.Selected));
永远不要在数据库中的一个值中存储多个信息。而是将每个选定的项目存储在其自己的记录中。所以这个逗号分隔的字符串不属于那里。规范化您的数据库。
但是,你不是在进行微观优化吗?如果您已从数据库中读取值,则可以使用简单循环来选择它们。这非常有效。
string hobby = GetHobbyFromDB();
string[] hobbies = hobby.Split(new []{", "}, StringSplitOptions.None);
foreach (ListItem li in cblHobbies.Items)
li.Selected = hobbies.Contains(li.Text);