в себе класс, а в классе 2 публичные переменные типа string и int, как мне получить номер класса в листе у которого наибольшее значение int?
Linq запросом можно
Человек не может придумать как циклом пройтись по своему списку и найти макс значение, а вы тут со своим Linq пугаете... Кстати, а можете посоветовать нормальный источник знаний, где можно поизучать логику и самое главное потренироваться
Перебрать List?
Я знаю, что циклом можно, ищу более оптимальное решение, через linq пробовал, но что-то не получается
int maxValueIterator=-1; for(int i=0; i<myList.Count; i++) { if(myList[i] > maxValue) maxValueIterator = i; }
Если прямо самый оптимальный, то сразу max хранить как поле класса и по мере вставки в List обновлять. Но надо понимать, а стоит ли игра свеч.
result = FirstOrDefault(i => i. Value >= MaxValue)
я написал строчку, но консоль выдаёт ошибку, как правильно оформить?
честно, я не понимаю что это за оборот, не встречал такой. ClassList это твой класс?
да, я переименовал, чтобы более понятно было с неймингом
можно еще раз задачу. у тебя локальная переменная id - тебе нужен конкретный экземпляр класса с максимальным значением intScore или просто само значение intScore? в ClassListe у тебя список значений или 1 поле intScore ?
локальная переменная id должна получить номер класса по списку, у которого переменная intScore наибольшая. ClassList содержит в себе 2 переменные одна типа string, другая int т.е переменная intScore. В консоле выдаёт ошибку, но я что-то не очень понимаю, что делать.
Это значит, что нет информации как сравнивать для определения максимума
Добавь в Max(x=> x.intScore)
IDE хочет, чтобы ты свой класс сделал сравниваемым, то есть реализовать IComparable (чтобы было что с чем сравнивать). Если тебе это ни о чем не говорит, просто берешь свой список, где лежат твои классы ClassList и тупо ищешь, что тебе надо, обычная минимаксная задачка. Хранить значение id как поле класса - на мой взгляд узкое решение, а что будет, если ты удалишь экземпляр с максимальным значением score из списка, как обновить id. возвращаемся к перебору.
спасибо, это помогло) только он берет самое большое значение intScore, а не номер класса в котором это наибольшее значение, как можно получить именно индекс?
Легче перебирать чем искать индекс через Linq, ты должен понимать что Max делает также линейный перебор элементов
А сколько элементов в списке будет?
ладно, тогда перебором сделаю
+- 40
int maxValueIterator=-1; for(int i=0; i<myList.Count; i++) { if(myList[i].value > maxValue) maxValueIterator = i; }
спасибо)
Обсуждают сегодня