C# 如何按复选框的名称对其进行排序?

C# 如何按复选框的名称对其进行排序?,c#,list,winforms,sorting,checkbox,C#,List,Winforms,Sorting,Checkbox,我有一个foreach循环,它用groupbox中的复选框填充列表。问题是它们是以随机顺序添加的。因为我按字母升序给它们命名,所以我想按它们的名称属性对它们进行排序 我已经尝试过使用.Sort(),但它没有任何作用。我还尝试使用Linq表达式digboxs=digboxs.OrderBy(x=>x.Name.ToList() 但它也没有任何作用 这是我的密码: GroupBox=(GroupBox)e.参数; 字符串DigInput=“”; List digboxs=新列表(); foreach

我有一个
foreach
循环,它用
groupbox
中的
复选框填充列表。问题是它们是以随机顺序添加的。因为我按字母升序给它们命名,所以我想按它们的
名称
属性对它们进行排序

我已经尝试过使用
.Sort()
,但它没有任何作用。我还尝试使用Linq表达式
digboxs=digboxs.OrderBy(x=>x.Name.ToList()

但它也没有任何作用

这是我的密码:

GroupBox=(GroupBox)e.参数;
字符串DigInput=“”;
List digboxs=新列表();
foreach(框中的控件c.控件)
{
如果(c是复选框)
{
添加(c作为复选框);
}
}
digboxs=digboxs.OrderBy(x=>x.Name.ToList();

您是否尝试过类似的方法:

var items = CheckBoxList1.Items
            .Cast<ListItem>()
            .OrderBy(i=>i.Text)
            .ToArray();
        CheckBoxList1.Items.Clear();
        CheckBoxList1.Items.AddRange(items);
var items=CheckBoxList1.items
.Cast()
.OrderBy(i=>i.Text)
.ToArray();
CheckBoxList1.Items.Clear();
复选框列表1.Items.AddRange(Items);

您是否尝试过类似的方法:

var items = CheckBoxList1.Items
            .Cast<ListItem>()
            .OrderBy(i=>i.Text)
            .ToArray();
        CheckBoxList1.Items.Clear();
        CheckBoxList1.Items.AddRange(items);
var items=CheckBoxList1.items
.Cast()
.OrderBy(i=>i.Text)
.ToArray();
CheckBoxList1.Items.Clear();
复选框列表1.Items.AddRange(Items);

我要删除您在评论中提供的关于姓名中数字的一些信息,因此我可能会也可能不会在这里删除。
取决于你有多少,你肯定会看到一个问题。按
Name
排序是一种直接的字符串比较,也就是说,它不以相同的方式考虑数值

例如,假设您的集合由
CheckBox\u 7
CheckBox\u 10
组成。如果你想让它们按数字顺序排列,你会期望7在10之前出现。字符串的情况并非如此。在每个名称的索引9处,我们有一个7和一个1。7明显更大,这意味着作为一个整体,
“CheckBox\u 7”
将位于
“CheckBox\u 10”
之后

如果要考虑数值,需要解析名称,并在自定义排序方法中添加一些额外的智能。

这里有一个类似的问题。这可能是您的具体案例的一个很好的起点:

我将删除您在评论中提供的关于姓名中数字的一些信息,因此我可能会也可能不会在这里删除。
取决于你有多少,你肯定会看到一个问题。按
Name
排序是一种直接的字符串比较,也就是说,它不以相同的方式考虑数值

例如,假设您的集合由
CheckBox\u 7
CheckBox\u 10
组成。如果你想让它们按数字顺序排列,你会期望7在10之前出现。字符串的情况并非如此。在每个名称的索引9处,我们有一个7和一个1。7明显更大,这意味着作为一个整体,
“CheckBox\u 7”
将位于
“CheckBox\u 10”
之后

如果要考虑数值,需要解析名称,并在自定义排序方法中添加一些额外的智能。

这里有一个类似的问题。这可能是您的具体案例的一个很好的起点:

定义“什么都不做”。您将
.OrderBy
放在哪里了?您能否在实现
.OrderBy
时发布代码和输出示例?这似乎很奇怪,因为这不起作用。说“不做任何事”完全符合我的意思。在它执行那行代码之后,当我检查debugger@Ziema我不认为你是什么意思。当然,它在做一些事情,它在整理收藏。您只是没有以有意义的方式使用结果。定义“什么都不做”。您将
.OrderBy
放在哪里了?您能否在实现
.OrderBy
的同时发布代码和输出示例?这似乎很奇怪,因为这不起作用。说“不做任何事”完全符合我的意思。在它执行那行代码之后,当我检查debugger@Ziema我不认为你是什么意思。当然,它在做一些事情,它在整理收藏。您只是没有以有意义的方式使用结果。谢谢!我删除了
Name
属性中的数值,并将其替换为字母,这解决了问题。谢谢!我删除了
Name
属性中的数值,并用字母顺序的数值替换,这解决了问题。