2014-05-08 33 views
0

我有一个Windows应用程序,它为用户提供了一个字符串下拉列表。这些数据来自给我们提供XML的web服务。通过XML节点排序对象列表....需要属性按字母顺序排序除了需要特定字母的项目列表中的第一项

我们循环并创建多个对象:

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

每个那些被添加到列表:listEnvs.Add(env);

现在,我想在“名称进行排序该列表“字段按字母顺序排列:任何以字母”p“开头的东西都必须先出现(当然,其余字母应按字母顺序排列)。

我不能使用LINQ,因为我们正在处理一个为.NET 2.0编写的应用程序,并且我没有权限更改(尚)。

我只是想让用户更容易一些,因为90%的时间,他们会希望从下拉菜单中选择以字母“p”开头的名称。没有任何意义,迫使他们滚动浏览下拉列表,一直从“A”到“P”。

任何想法,我如何可以拉出这样的排序?

谢谢!

回答

0

,如果这是过于简单或缺少点歉意......

您是否尝试过使用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); 

代码}

+0

是啊,我是比较新的C#,所以我我一直在沿着你所展示的方向努力尝试,但我只是不能确切地理解添加到Sort的参数......看到了很多ex与参考代表的关系。 – DaveyBoy

+0

嘿,发现了我遇到麻烦的另一个原因。那么,两个,真的:我的列表后来在代码中被重新排序...然后下拉本身的Sort属性为true。所以我试过的每件事都反过来按字母顺序翻转过来。 DaveyBoy

+0

Doh! ..虽然发现很好。 – Migsy