2009-06-12 55 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);  
    } 
}