2009-06-12 43 views
3

我有一張表格,裏面有一些國家列表,用來填充下拉菜單。我如何使用LINQ返回一個國家列表,但將某個特定國家放在頂部?

我該如何構建一個LINQ查詢,以便按照字母順序返回該表中的國家/地區列表,除了將美國置於頂端?

因此,如果表中包含:

瑞典
美國
墨西哥
丹麥

這將返回:

美國
丹麥
墨西哥
瑞典

+0

請不要那樣做。使用起來很尷尬。相反,預先選擇你正在填充到所需的「默認」國家的任何列表 – 2009-06-12 22:11:27

回答

5

您可以使用國名作爲第二順序:

return countries.OrderBy(c => GetPrimaryOrdering(c)).ThenBy(c => c.Name); 

int GetPrimaryOrdering(Country country) 
{ 
    return country.Name == "USA" ? 0 : 1 
} 
0
  1. 將美國添加到下拉菜單中。

  2. 添加按字母順序排列的國家後綴列表。 。

下拉控制將保留你添加的項目的順序

3

試試這個(一個班輪):

var Countries = new List<string>() { "Denmark", "USA", "Mexico" }; 
return Countries.OrderBy(c=> c=="USA"? " ": c); 

說明:

此排序按名稱列出國家名單,用「」替代應該是第一名的國家。由於空白字母按字母順序排在其他字母之前,因此「默認」國家將首先列出。

0

可笑...

var lst = new List<string>() 
    { "Sweden", "USA", "Mexico", "Denmark", "Ziptown" }; 

lst.Sort((x, y) => 
{ 
    if (x == "USA" || y == "USA") 
    { 
    if (x == y) 
    { 
     return 0; 
    } 

    return (x == "USA") ? -1 : 1; 
    } 
    else 
    { 
    return x.CompareTo(y);  
    } 
}