我有一张表格,其中包含我用来填充下拉菜单的国家/地区列表。
如何构建LINQ查询,以便按字母顺序从该表返回国家/地区列表,但将USA放在顶部除外?
所以,如果表包含:
瑞典
美国
墨西哥
丹麦
它将返回:
美国
丹麦
墨西哥
瑞典
答案 0 :(得分:5)
您可以使用国家/地区的名称作为辅助订购:
return countries.OrderBy(c => GetPrimaryOrdering(c)).ThenBy(c => c.Name);
int GetPrimaryOrdering(Country country)
{
return country.Name == "USA" ? 0 : 1
}
答案 1 :(得分:3)
试试这个(单行):
var Countries = new List<string>() { "Denmark", "USA", "Mexico" };
return Countries.OrderBy(c=> c=="USA"? " ": c);
说明:
这会按名称对国家/地区列表进行排序,将“”替换为应该是第一个的国家/地区。由于空格按字母顺序排在任何其他字母之前,因此将首先列出“默认”国家/地区。
答案 2 :(得分:0)
将美国添加到下拉列表中。
添加按字母顺序排列的国家/地区列表。
下拉控件将保留您添加项目的顺序。
答案 3 :(得分: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);
}
}