@baimkin

Linq to DataTable как получить строку с минимальным значением в столбце?

Пытаюсь получить строку с минимальным значением в столбце, в столбце такого рода данные:

10914,76
10970

т.е есть и пустоты и null

IEnumerable<DataRow> results = from myRow in dt.AsEnumerable()
                              orderby double.Parse("Цена") where !String.IsNullOrWhiteSpace("Цена")
                              select myRow;
DataRow row = results.FirstOrDefault();


но получаю ошибку System.FormatException: "Входная строка имела неверный формат."

Пробовал еще так:
where ("Цена") != null && ("Цена") != ""

если убрать double.Parse , то получаю данные из первой строки в таблице
  • Вопрос задан
  • 308 просмотров
Решения вопроса 1
AlekseyNemiro
@AlekseyNemiro
full-stack developer
Значения NULL уровня базы данных нужно проверять с DBNull.Value.

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

"Цена" в представленном коде является просто строкой, содержащей слово "Цена". Если это имя поля, то следует обращаться к нему через myRow.

from myRow in dt.AsEnumerable()
where myRow["Цена"] != DBNull.Value
orderby double.Parse(myRow["Цена"])
select myRow;
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@shmaroder
https://creditpower.ru
Вот так попробуй:
IEnumerable<DataRow> results = from myRow in dv.Table.AsEnumerable()
                                           orderby double.Parse(myRow["Цена"].ToString())
                                           where myRow["Цена"]!=null && myRow["Цена"]!=""
                                           select myRow;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы