Проблема сортировки при использовании поля со списком с элементом и сохранении данных элемента в виде отсортированного списка

У меня есть проект, в котором хранятся элементы и данные элементов (число) с отсортированными причинами. У меня есть 2 объекта: 1.sorted Combobox, в котором хранятся элементы (имена) 2.sortedlist, который сохраняет элемент (имя) в качестве ключа и данные элемента (число) в качестве значения.

По какой-то причине некоторые символы (например, «-») не сортируются одинаково в комбо и в отсортированном списке. Комбинация сохраняет строку с «-» в первой строке или группе, в то время как в отсортированном списке он находится в последний ряд группы. это мой код:

public partial class Form1: Form
{
    public Form1()
    {
        InitializeComponent();
    }

    SortedList<object, object> sortedvbcombo = new SortedList<object, object>();
    private void Form1_Load(object sender, EventArgs e)
    {
        Data[] D = new Data[5];
        D[0] = new Data();
        D[0].name = "BABA";
        D[0].number = 1000;
        D[1] = new Data();
        D[1].name = "B-REAL";
        D[1].number = 1001;
        D[2] = new Data();
        D[2].name = "BCCDC";
        D[2].number = 1002;
        D[3] = new Data();
        D[3].name = "BAAAAA";
        D[3].number = 1003;
        D[4] = new Data();
        D[4].name = "BFFFFDS";
        D[4].number = 1004;
        comboBox1.Sorted = true;
        for (int i = 0; i < D.Count(); i++)
        {
            comboBox1.Items.Add(D[i].name);
            sortedvbcombo.Add(D[i].name, D[i].number);
        }

    }
}
struct Data
{
    public string name;
    public int number;
}

результат для поля со списком: B-REAL BAAAAA BABA BCCDC BFFFFDS

результат для отсортированного списка: BAAAAA BABA BCCDC BFFFFDS B-REAL, почему он не сортируется таким же образом и возможно ли выровнять его из свойств отсортированного списка? p.s. я знаю, что есть возможность использовать

sortedlist<object,object> srt = new sortedlist<object,object>(idictionary)

но не нашел как это реализовать


person Y.D    schedule 09.02.2016    source источник
comment
главный вопрос в том, почему есть разница между сортировкой выпадающего списка и сортировкой отсортированного списка и как мы можем ее выровнять   -  person Y.D    schedule 11.02.2016


Ответы (1)


одно решение, которое я нашел на данный момент (хотя я думаю, что сортировка со списком неверна), заключается в кодировании данных в список сортировки

    for (int i = 0; i < D.Count(); i++)
    {
        comboBox1.Items.Add(D[i].name);
        byte[] encbuff = System.Text.Encoding.UTF8.GetBytes(D[i].name);
        sortedvbcombo.Add(Convert.ToBase64String(encbuff), D[i].number);
    }

есть ли более разумный способ сделать это с помощью списка сортировки или сортировки со списком?

person Y.D    schedule 12.02.2016