#c# #list #wpfdatagrid
#c# #Список #wpfdatagrid
Вопрос:
Хорошо, у меня есть некоторые данные в списке, которые затем привязываются к DataGrid. Данные выглядят примерно так.
Code Product Weight
008 811 10.0
008 842 12.0
I008 852 8.0
008 N/A 0.0
I008 ALL Version 0.516
VAL N/A 1.0
Как мне отсортировать это на основе следующих правил
- Все, что в продукте = N / A, должно быть в верхней части
- Все в коде, начинающемся с буквы I, идет в самый низ
- Все остальное просто сортируйте по коду
Итак, приведенная выше таблица хотела бы этого.
Code Product Weight
008 N/A 0.0
VAL N/A 1.0
008 811 10.0
008 842 12.0
I008 852 8.0
I008 ALL Version 0.516
Ответ №1:
Вы могли бы настроить свой собственный алгоритм сортировки.
Обычно C # имеет несколько интерфейсов, которые вы можете реализовать, например IComparable или IEquatable, которые используются такими методами, как Array.Sort(), для сортировки массива или коллекции.
Приветствую, Фелипе
Ответ №2:
Не проходя через обручи и не написав свой собственный алгоритм сортировки, я бы просто предварительно запросил данные, УПОРЯДОЧЕННЫЕ По условию, которое вы в конечном итоге хотите представить.
Если из MySQL, вы можете использовать IF()… Если из других, таких как SQL-Server, вам, возможно, придется заменить на использование CASE, КОГДА / ELSE END
SELECT
pr.Code,
pr.Product,
pr.Weight
from
ProductTable pr
order by
if( pr.Product = 'N/A', 1, 2 ),
if( LEFT( pr.Code, 1 ) = 'I', 2, 1 ),
pr.Code
Комментарии:
1. даже с использованием ORDERED BY, я думаю, мне все еще придется немного повозиться. По мере того, как она будет создаваться в базе данных SQL, я думаю, я могу добавить к ней еще один столбец и назвать его priority или что-то в этом роде, а затем выполнить цикл по базе данных и пометить что-либо с помощью Product = N / A как 1, что-либо с ‘I’ как 3, а затем что-либо еще как 2. Затем просто выполните команду ORDERED BY в поле priority.
2. @Gazlar, вы можете выполнить сложное упорядочение в SQL, какой SQL вы используете… MySQL, SQL-Сервер, ???
3. Я использую SQLCE в качестве базы данных и Linq для выполнения любого запроса и т.д.
4. Есть ли способ Linq сделать то, что вы написали DRapp?
5. Извините, я не могу помочь в этом отделе… Я не использую Linq… (пока)