我有一張表格,裏面有一些國家列表,用來填充下拉菜單。我如何使用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