2012-07-10 60 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();