Как получить минимальное значение из списка?

sdfwef12

Новичок
Регистрация
20.12.2015
Сообщения
17
Благодарностей
1
Баллы
3
Можете подсказать как из вот такого списка получить минимальное значение:




Нашел на форме такой код, который сортирует значения, но он корректно работает только для целых чисел. А для типа таких 395.5 сортирует отдельно.
C#:
List<string> numbers = project.Lists["number"].ToList();// зеновский список
project.Lists["number"].Clear();
numbers = numbers.OrderBy(s=>s.Length).ThenBy(s=>s).ToList();
numbers.ForEach(s=>project.Lists["number"].Add(s));
Можете подсказать как его доработать чтобы сортировал все числа и возвращал минимальное, первое и последнее число?
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 691
Баллы
113
тебе надо привести все числа к одной длине строки.
суть в том что сравнение идет как строк и "34" всегда меньше "30.1"
то есть тебе надо привести все цифири к виду 34.0 и 30.1 тогда будет правильно сортировать.
 

sdfwef12

Новичок
Регистрация
20.12.2015
Сообщения
17
Благодарностей
1
Баллы
3
тебе надо привести все числа к одной длине строки.
суть в том что сравнение идет как строк и "34" всегда меньше "30.1"
то есть тебе надо привести все цифири к виду 34.0 и 30.1 тогда будет правильно сортировать.
А как это сделать можете подсказать? Как-то через Convert.ToInt32 ?
Я C# никогда не работал. Может быть есть какой-то вариант через стандартный функционал zennoposter получить мин. значение?
 

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 021
Благодарностей
1 385
Баллы
113
Операции над списком
74607
Первая строка будет минимальным значением, последняя максимальным
И, соответственно кодом, только список при этом останется неотсортированным
C#:
return numbers.OrderBy(x=>double.Parse(x.Replace(".", ","))).First();//min
//или
return numbers.OrderBy(x=>double.Parse(x.Replace(".", ","))).Last();//max
 

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 805
Баллы
113
Можно обойтись стандартным экшеном Операции над списком=>Сортировать=>Сортировать как числа, если это возможно.
Потом тем же экшеном берёте первую строку.
74608
 

sdfwef12

Новичок
Регистрация
20.12.2015
Сообщения
17
Благодарностей
1
Баллы
3
Можно обойтись стандартным экшеном Операции над списком=>Сортировать=>Сортировать как числа, если это возможно.
Потом тем же экшеном берёте первую строку.
Операции над списком
Посмотреть вложение 74607
Первая строка будет минимальным значением, последняя максимальным
Так сортирует некорректно из-за точки в некоторых цифрах. Вот выше подсказали почему.
суть в том что сравнение идет как строк и "34" всегда меньше "30.1"

И, соответственно кодом, только список при этом останется неотсортированным
C#:
return numbers.OrderBy(x=>double.Parse(x.Replace(".", ","))).First();//min
//или
return numbers.OrderBy(x=>double.Parse(x.Replace(".", ","))).Last();//max
Спасибо большое. Так работает.
Можете подсказать x=>double что значит ? Где-то можно про это почитать? По остальному вроде понятно.
 
Последнее редактирование:

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)