CultureInfo和默认选择值

时间:2012-07-10 07:35:55

标签: c# asp.net cultureinfo

我的功能:

 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


culture

但我希望第一项必须是English。是否有任何技巧可以实现这一结果?谢谢。

2 个答案:

答案 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();