我的功能:
public void loadCultureList()
{
CultureInfo[] cultures = CultureInfo.GetCultures(CultureTypes.AllCultures);
ddlCulture.DataSource = cultures; //ddlCulture is dropdownlist id
ddlCulture.DataTextField = "DisplayName";
ddlCulture.DataValueField = "IetfLanguageTag";
ddlCulture.DataBind();
}
当我使用此功能绑定dropdownlist
时,我得到的第一项是Arabic
。
但我希望第一项必须是English
。是否有任何技巧可以实现这一结果?谢谢。
答案 0 :(得分:2)
您可以在cultures
数组中找到相应的文化,并创建一个新数组,其中英语是第一个项目,而其他所有项目都“向下移动”了一个位置。
使用LINQ非常简单:
var english = new[] { cultures.Single(ci => ci.DisplayName == "English") };
cultures = english.Concat(cultures.Except(english)).ToArray();
答案 1 :(得分:0)
尝试使用:
CultureInfo[] cultures = CultureInfo
.GetCultures(CultureTypes.AllCultures)
.OrderBy(p => p.EnglishName == "English" ? 0 : 1)
.ToArray();
如果您想确定列表是按英文名称排序的,可以使用
CultureInfo[] cultures = CultureInfo
.GetCultures(CultureTypes.AllCultures)
.OrderBy(p => p.EnglishName == "English" ? 0 : 1)
.ThenBy(p => p.EnglishName)
.ToArray();