Как отсортировать ResourceSet в C # - PullRequest
1 голос
/ 09 ноября 2009

У меня есть файл ресурсов с именем filetypes.resx. Некоторым образом я решил связать значения ресурсов с выпадающим списком, но я не знаю, как отсортировать значения ResourceSet .

Вот что я сделал до сих пор,

FileTypes.resx

  • Name, Value
  • A, 1

  • B, 2

код для привязки выпадающего списка


DropDownList1.DataSource = Resources.FileTypes.ResourceManager.GetResourceSet(System.Globalization.CultureInfo.CurrentCulture, true, true);
DropDownList1.DataTextField = "Key";
DropDownList1.DataValueField = "Value";
DropDownList1.DataBind();

Результат

 A
 C
 B
As you can see the result is not sorted. Please help me to solve this issue.

Заранее большое спасибо:)

Ответы [ 4 ]

6 голосов
/ 09 ноября 2009

Набор ресурсов имеет IDictionaryEnumerator, поэтому я предполагаю, что его элементы имеют тип DictionaryEntry, попробуйте отсортировать источник данных следующим образом:

DropDownList1.DataSource = Resources.FileTypes.ResourceManager
    .GetResourceSet(System.Globalization.CultureInfo.CurrentCulture, true, true)
    .OfType<DictionaryEntry>()
    .OrderBy(i => i.Value);

Хм, у меня нет открытой визуальной студии, так что не вините меня, если она не работает сразу:)

1 голос
/ 09 ноября 2009

ResourceSet имеет свойство с именем Table , типа HashTable . Возможно, вы могли бы создать отсортированный список из этой таблицы (вручную или с помощью LINQ), а затем назначить этот список для DropDownList1.DataSource.

0 голосов
/ 09 ноября 2009

Hashtable tbl = Resources.FileTypes.ResourceManager.
GetResourceSet(System.Globalization.CultureInfo.CurrentCulture, true, true).Table;
List source = new List(tbl.Values);
source.Sort();
DropDownList1.DataSource = source;
DropDownList1.DataBind();

0 голосов
/ 09 ноября 2009

Hashtable не является отсортированной коллекцией.

...