我有一张表格,里面有一些国家列表,用来填充下拉菜单。我如何使用LINQ返回一个国家列表,但将某个特定国家放在顶部?
我该如何构建一个LINQ查询,以便按照字母顺序返回该表中的国家/地区列表,除了将美国置于顶端?
因此,如果表中包含:
瑞典
美国
墨西哥
丹麦
这将返回:
美国
丹麦
墨西哥
瑞典
?
我有一张表格,里面有一些国家列表,用来填充下拉菜单。我如何使用LINQ返回一个国家列表,但将某个特定国家放在顶部?
我该如何构建一个LINQ查询,以便按照字母顺序返回该表中的国家/地区列表,除了将美国置于顶端?
因此,如果表中包含:
瑞典
美国
墨西哥
丹麦
这将返回:
美国
丹麦
墨西哥
瑞典
?
您可以使用国名作为第二顺序:
return countries.OrderBy(c => GetPrimaryOrdering(c)).ThenBy(c => c.Name);
int GetPrimaryOrdering(Country country)
{
return country.Name == "USA" ? 0 : 1
}
将美国添加到下拉菜单中。
添加按字母顺序排列的国家后缀列表。 。
下拉控制将保留你添加的项目的顺序
试试这个(一个班轮):
var Countries = new List<string>() { "Denmark", "USA", "Mexico" };
return Countries.OrderBy(c=> c=="USA"? " ": c);
说明:
此排序按名称列出国家名单,用“”替代应该是第一名的国家。由于空白字母按字母顺序排在其他字母之前,因此“默认”国家将首先列出。
可笑...
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);
}
}
请不要那样做。使用起来很尴尬。相反,预先选择你正在填充到所需的“默认”国家的任何列表 – 2009-06-12 22:11:27