簡體   English   中英

如何按復選框名稱對復選框列表進行排序?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM