[英]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.