2012-07-10 24 views
1

我的功能:的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

您可以在cultures数组中找到相应的区域性,并创建一个新的数组,其中英语是第一项,其他所有项都“向下移动”了一个位置。

它很容易与LINQ:

var english = new[] { cultures.Single(ci => ci.DisplayName == "English") }; 
cultures = english.Concat(cultures.Except(english)).ToArray(); 
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();