Да и сравнивать такие ключи будет сложнее. Что значит A > B? Что у A время больше ИЛИ номер ноты больше ИЛИ номер канала больше?
Сравнение как раз довольно простое - если использовать например SortedSet<T>, то достаточно воспользоваться конструктором который принимает IComparer и передать туда имплементацию с методом Compare что-то типа: (x, y) => x.Time - y.Time != 0 ? x.Time - y.Time : x.Channel - y.Channel Цепочку сравнений можно сколь угодно увеличивать.
Вместо отдельной имплементации IComparer, можно у самого элемента имплементировать IComparable<T>.
Спасибо за статью. Хотел уточнить про добавление в дерево элементов с одинаковым ключем - почему нельзя было бы использовать сложный ключ - что-то типа время+номер трека?
Я вот другого не понимаю. Ну не пользуются они статическими анализаторами (ну или не смотрят на отчёты, так как багов и так дофига). Ну и ладно. Но почему не используется Nullable reference types?
На заметку - есть ещё такая удобная визуальная тулза для переноса данных из одной бд в другую - Pentaho Data Integration (вроде бы она же называется Kettle, а сам исполняемый файл Spoon). Вот ссылка на community edition - https://sourceforge.net/projects/pentaho/files/Data Integration/7.1/
В своё время очень помогла при миграции с MS SQL и с Oracle на Postgres. Впрочем она написана на Java и поддерживает любые JDBC драйвера.
Я уже несколько лет использую свой велосипед для связки T4 и Roslyn. Вот недавно собрался и выложил его в nuget и на github. Возможно, кому-нибудь пригодится.
Сравнение как раз довольно простое - если использовать например SortedSet<T>, то достаточно воспользоваться конструктором который принимает IComparer и передать туда имплементацию с методом Compare что-то типа:
(x, y) => x.Time - y.Time != 0 ? x.Time - y.Time : x.Channel - y.Channel
Цепочку сравнений можно сколь угодно увеличивать.
Вместо отдельной имплементации IComparer, можно у самого элемента имплементировать IComparable<T>.
Спасибо за статью. Хотел уточнить про добавление в дерево элементов с одинаковым ключем - почему нельзя было бы использовать сложный ключ - что-то типа время+номер трека?
Если фича взлетит, то ее перенесут в Windows 11. Или уже в 12?. Некоторые фичи из ПоверТойз так уже попали в 11.
Я вот другого не понимаю. Ну не пользуются они статическими анализаторами (ну или не смотрят на отчёты, так как багов и так дофига). Ну и ладно. Но почему не используется Nullable reference types?
В варианте WPF чуть правильнее использовать свойство ItemsControl.ItemContainerStyle, а не просто складывать стиль в ресурсы.
На заметку - есть ещё такая удобная визуальная тулза для переноса данных из одной бд в другую - Pentaho Data Integration (вроде бы она же называется Kettle, а сам исполняемый файл Spoon). Вот ссылка на community edition - https://sourceforge.net/projects/pentaho/files/Data Integration/7.1/
В своё время очень помогла при миграции с MS SQL и с Oracle на Postgres. Впрочем она написана на Java и поддерживает любые JDBC драйвера.