0

Написал данный запрос для сортировки, вроде все отлично но "test10" влезает не туда, есть идея, что "10" выступает в роли "2" в десятичной системе. Как фиксить? (на счет от А до Я в ComboBox, поменяю...)

SqlDataAdapter adapter = new SqlDataAdapter();
            DataTable dt = new DataTable();
            SqlCommand cmd = null;
            if (v == 1)
            {
                cmd = new SqlCommand($"SELECT * FROM Product " +
                                                $"ORDER BY name_product ASC", con);
            }
            else if (v == 0)
            {
                cmd = new SqlCommand($"SELECT * FROM Product " +
                                     $"ORDER BY name_product DESC", con);
            }
            adapter.SelectCommand = cmd;
            adapter.Fill(dt);
            return dv = dt.DefaultView;

введите сюда описание изображения

введите сюда описание изображения

gw gw
  • 95
  • 6
  • Аналогично этому, только метод не фильтрации, а сортировки. И почему все используют этот несчастный Ado.net не пойму.... – EvgeniyZ Sep 20 '22 at 20:33
  • @EvgeniyZ посоветуете что-то лучше? просто единственное, что я смог найти в качестве связи с бд – gw gw Sep 20 '22 at 20:36
  • Вам для чего? Понять, как писать запросы вручную, обрабатывать их и так далее? Если да, то оставайтесь на ADO.NET, если вам нужно лишь работать удобно с базой, то берите современный EF, который по сути является оберткой над ADO.NET и составляет все запросы грамотно за вас (включая создание базы (миграция) ), вам его лишь грамотно настроить надо. Просто я не знаю, как по мне, люди себя не уважают с ADO.NET) Вместо всего вашего кода можно написать на EF допустим просто var result = db.Items.OrderBy(x=>x.Name);, (ну и + парочка классов, которые описывают базу и подключение), все.... – EvgeniyZ Sep 20 '22 at 20:48
  • @EvgeniyZ как относитесь к model ado net? – gw gw Sep 20 '22 at 21:03
  • Всё правильно сортирует. Это же строки. Строка "10" больше "1", но меньше "2". – Alexander Petrov Sep 20 '22 at 21:04
  • @AlexanderPetrov чего? типо разный вес? у "10" больше битов чем у "1", но меньше " 2"? – gw gw Sep 20 '22 at 21:09
  • Это не числа, это строки. – Alexander Petrov Sep 20 '22 at 21:10
  • @AlexanderPetrov т.е последний элемент строки '0' является пустым, поэтому получается "test1"? – gw gw Sep 20 '22 at 21:12
  • Нет. "10" это и есть "10". Строка. Не число. Это в любом языке программирования так. Основы. – Alexander Petrov Sep 20 '22 at 21:14
  • https://stackoverflow.com/q/20240313/5045688 - тут несколько вариантов – Alexander Petrov Sep 20 '22 at 21:20
  • order by len(col), col - хороший способ – Alexander Petrov Sep 20 '22 at 21:24
  • 1
    @gwgw model ado net - если вы любите ковыряться в XML файликах, создавать кучу лишнего, дерзайте) А я, пожалуй, на EF напишу простой класс, с простыми свойствами и буду работать с базой, как с простой коллекцией) – EvgeniyZ Sep 20 '22 at 21:26
  • @EvgeniyZ - между прочим, EF - это часть ADO.NET. Обзор. – Alexander Petrov Sep 22 '22 at 12:50
  • @AlexanderPetrov Я знаю, выше про это и написал (берите современный EF, который по сути является оберткой над ADO.NET). Поэтому и удивляюсь, почему люди используют скажем так "низкоуровневые" механизмы, если только для обучения, ок. – EvgeniyZ Sep 22 '22 at 12:56

0 Answers0