[英]How do I sort a list of checkboxes by their name?
我有一个foreach
循环,其中充满了来自groupbox
checkboxes
的列表。 问题在于它们是以随机顺序添加的。 由于我都按字母升序命名它们,因此我想按它们的Name
属性对它们进行排序。
我已经尝试使用.Sort()
但是它什么也没做。 我也尝试使用Linq表达式DigBoxes = DigBoxes.OrderBy(x => x.Name).ToList();
但这也无能为力...
这是我的代码:
GroupBox box = (GroupBox)e.Argument;
string DigInput = "";
List<CheckBox> DigBoxes = new List<CheckBox>();
foreach (Control c in box.Controls)
{
if(c is CheckBox)
{
DigBoxes.Add(c as CheckBox);
}
}
DigBoxes = DigBoxes.OrderBy(x => x.Name).ToList();
我要删除您在评论中提供的有关名称中包含数字的信息,因此我可能会不在此处。
根据您拥有的数量,您肯定会遇到问题。 按Name
排序是直接的字符串比较,也就是说,它不会以相同的方式考虑数值。
例如,假设您的集合由CheckBox_7
和CheckBox_10
。 如果要按数字顺序排列,则希望7排在10之前。字符串不是这种情况。 在每个名称的索引9处,我们有一个7和一个1。7显然更大,这意味着整体上, "CheckBox_7"
将在"CheckBox_10"
。
如果要考虑数字值,则需要解析名称,并在自定义排序方法中添加一些额外的知识。
这是一个类似问题。 对于您的特定情况,这可能是一个很好的起点: 对字符串数字进行排序
您是否尝试过以下方法:
var items = CheckBoxList1.Items
.Cast<ListItem>()
.OrderBy(i=>i.Text)
.ToArray();
CheckBoxList1.Items.Clear();
CheckBoxList1.Items.AddRange(items);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.