2014-05-08 83 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