C# SortedDictionary<of String, Boolean> где String - путь к файлу, как сортировать по расширению? [закрыт]

111
26 ноября 2019, 21:20

SortedDictionary sortDict....

так не работает... sortDict.OrderBy(p => Path.GetExtension(p.Key))

Answer 1

У класса SortedDictionary<TKey,TValue> есть конструктор, который принимает IComparer<T> для сравнения ключей.

Таким образом, если мы напишем нужный нам компарер, мы можем определить порядок сортировки ключей в коллекции.

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

public class ExtensionComparer : IComparer<string>
{
    public int Compare(string x, string y)
    {
        var ret =  string.Compare(Path.GetExtension(x), Path.GetExtension(y));
        if (ret != 0) return ret;
        return string.Compare(x, y);
    }
}

Как проверить:

var dict = new SortedDictionary<string, bool>(new ExtensionComparer());
dict.Add("file2.txt", false);
dict.Add("file1.txt", true);    
dict.Add("file2.1xt", false);
dict.Add("file1.1xt", true);
foreach (var kv in dict)
    Console.WriteLine($"{kv.Key} - {kv.Value}");

Вывод

file1.1xt - True
file2.1xt - False
file1.txt - True
file2.txt - False
READ ALSO
Как динамические добавлять элементы Visual studio c# [закрыт]

Как динамические добавлять элементы Visual studio c# [закрыт]

Как достать записи из бд и динамически добавлять их в такой форме? Какой компонент использовать?

138
Обезумевший RayCast

Обезумевший RayCast

Делаю проект учебный - игру на unityВроде бы работала стрельба простая на RayCast'ах

123
Фоновые задачи ASP.NET

Фоновые задачи ASP.NET

Создаю бота для ВК используя Callback APIВсю основу уже сделал, есть БД, использую миграции

109
Изменение отображения chart doughnut

Изменение отображения chart doughnut

Как можно изменить chart doughnut ,чтобы он выглядел как на этой картинке? По умолчанию он выглядит как полный круг, на картинке же только половина...

108