사전 열거되면 얻을 것입니다 KeyValuePair<TKey,TValue>
그냥 "값"을위한 "키"를 지정해야합니다 ... 그래서 객체 DataTextField
와 DataValueField
선택에 각각 값 / 키 속성을.
Joe의 의견 덕분에 나는 올바른 방법을 찾기 위해 질문을 다시 읽었습니다. 일반적으로 사전에있는 "키"는 표시되는 텍스트이고 "값"은 가져온 값이 될 것으로 예상합니다. 샘플 코드는 다른 방식으로 사용합니다. 이런 식으로 실제로 필요하지 않는 한 코드를 다음과 같이 작성하는 것이 좋습니다.
list.Add(cul.DisplayName, cod);
( 물론에 "키"를 사용 DataTextField
하고 "값" 을 사용하도록 바인딩을 변경합니다 DataValueField
.)
사실 사전이 아닌 목록을 원하는 것 같기 때문에 처음부터 사전을 사용하는 것을 다시 고려할 수 있습니다. 다음을 사용할 수 있습니다 List<KeyValuePair<string, string>>
.
string[] languageCodsList = service.LanguagesAvailable();
var list = new List<KeyValuePair<string, string>>();
foreach (string cod in languageCodsList)
{
CultureInfo cul = new CultureInfo(cod);
list.Add(new KeyValuePair<string, string>(cul.DisplayName, cod));
}
또는 일반 CultureInfo
값 목록을 사용하십시오 . LINQ는이 작업을 정말 쉽게 만듭니다.
var cultures = service.LanguagesAvailable()
.Select(language => new CultureInfo(language));
languageList.DataTextField = "DisplayName";
languageList.DataValueField = "Name";
languageList.DataSource = cultures;
languageList.DataBind();
LINQ를 사용하지 않는 경우에도 일반 foreach 루프를 사용할 수 있습니다.
List<CultureInfo> cultures = new List<CultureInfo>();
foreach (string cod in service.LanguagesAvailable())
{
cultures.Add(new CultureInfo(cod));
}
languageList.DataTextField = "DisplayName";
languageList.DataValueField = "Name";
languageList.DataSource = cultures;
languageList.DataBind();