对对象列表进行排序…需要属性按字母顺序排序,除非需要在列表中具有特定字母FIRST的项目

本文关键字:排序 列表 项目 FIRST 属性 对象 顺序 | 更新日期: 2023-09-27 18:02:19

我有一个Windows应用程序,为用户提供了一个字符串下拉列表。数据来自提供XML的web服务。

我们循环遍历XML节点并创建多个对象:

Environment env = new Environment(id, name, type);

每一个都被添加到列表中:listEnvs.Add(env);

现在,我想按"name"字段按字母顺序对该列表排序,有一个技巧:任何以字母"p"开头的内容都需要排在前面(当然,应该按其余字母的字母顺序排列)。

我不能使用LINQ,因为我们在这里处理的是一个为。net 2.0编写的应用程序,我没有权限更改它(目前)。

我只是想让用户更容易一点,因为90%的情况下,他们会想从下拉列表中选择以字母"p"开头的名字。没有必要强迫他们一直滚动下拉列表从"A"到"P"。

我该怎么做呢?

谢谢!

对对象列表进行排序…需要属性按字母顺序排序,除非需要在列表中具有特定字母FIRST的项目

如果这过于简单或没有抓住重点,我表示歉意…

你试过使用list.sort(compareFn)吗?

,

private static int CompareEnv(Environment a, Environment b)
    {
        if (String.IsNullOrEmpty(a.name))
        {
            if (String.IsNullOrEmpty(b.name)) return 0;
            else return -1;
        }
        if (String.IsNullOrEmpty(b.name)) return 1;
        if (a.name.StartsWith("P"))
        {
            if (b.name.StartsWith("P")) return a.name.CompareTo(b.name);
            else return -1;
        }
        if (b.name.StartsWith("P")) return 1;
        return a.name.CompareTo(b.name);
    }

{

//设置列表的代码

    listEnvs.Sort(CompareEnv);

}