按字母顺序排列从resx文件中提取的所有图像C#

时间:2014-11-19 18:14:05

标签: c# resx alphabetical

我有一个下拉组合框,可以更改图片框的图像。这些图像存储在一个resx文件中,其中包含一个对它们进行计数的数组,因此如果我决定添加更多,我只需要更新组合框,并将图像添加到resx文件中。我遇到的问题是,当我使用组合框更新图像时,resx中的图像不是按字母顺序排列,但它们确实会更改图片框上的图像。

这是我的代码

        ResourceSet cardResourceSet = Properties.Resources.ResourceManager.GetResourceSet(CultureInfo.CurrentUICulture, true, true);

        attributes = new Image[cardCount];
        cardCount = 0;

        foreach (DictionaryEntry entry in cardResourceSet)
        {
            string resourceKey = (string)entry.Key;
            object resource = entry.Value;

            cardCount++;
        }

        attributes = new Image[cardCount];
        cardCount = 0;

        foreach (DictionaryEntry entry in cardResourceSet)
        {
            attributes[cardCount] = (Image)entry.Value;
            cardCount++;
        }

        if (attributeBox.SelectedIndex != -1)
        {
            this.cardImage.Image = attributes[attributeBox.SelectedIndex];
        }

如何按字母顺序对resx中的资源进行排序?

1 个答案:

答案 0 :(得分:1)

返回类型GetResourceSetResourceSet,实现IEnumerable,因此您应该可以在其上运行一些LINQ命令:

foreach (var entry in cardResourceSet.Cast<DictionaryEntry>().OrderBy(de => de.Key))
{

}

由于你要迭代两次(虽然我不确定第一个for循环的重点,除非还有其他代码),你可能想要将排序后的结果分配给一个单独的变量:

var sortedCardResourceSet.Cast<DictionaryEntry>().OrderBy(de => de.Key).ToList();

foreach (var entry in sortedCardResourceSet)
{
    ...
}

...