Отсортировать List с LINQ C#

Рейтинг: 2Ответов: 1Опубликовано: 03.04.2015

Мне нужно отсортировать в мою переменную StudentsWitHighestDebts типа var(List) из students только те объекты которые имеют значение в s.ZachetDidNotPass максимум или (максимум -1) во всем List students

var StudentsWitHighestDebts = students
        .Where(s => s.ZachetDidNotPass.(some condition))
        .OrderBy(s => s.Name)
        .ToList();

Допустим у меня есть List students с объектами у которых значение ZachetDidNotPass равное 0, 1, 2, 5, 6, 7 мне нужно занести в StudentsWitHighestDebts только тех, у кого эти значения максимальны или максимальны -1. Т.е тех, у кого 7 и 6

Помогите пожалуйста.Сам с помощью MSDN не смог разобраться... Можно ли решить так:

foreach (var n in students)
{
    if (n.ZachetDidNotPass > maxZachDidNotPass)
    {
        maxZachDidNotPass = n.ZachetDidNotPass;
    }
    if (n.ExamDidNotPass > maxExamDidNotPass)
    {
        maxExamDidNotPass = n.ExamDidNotPass;
    }
}
var StudentsWitHighestDebts = students
        .Where(s => s.ZachetDidNotPass == maxZachDidNotPass
                    || s.ZachetDidNotPass == maxZachDidNotPass - 1
                       && s.ExamDidNotPass == maxExamDidNotPass
                    || s.ExamDidNotPass == maxExamDidNotPass-1)
        .OrderBy(s => s.Name)
        .ToList();

Ответы

▲ 3Принят
var arr = new[] {0, 1, 2, 5, 6, 7};
var res = from item in arr
          let max = arr.Max()
          where item == max || item == max - 1
          select item;

Ваши значения, думаю, подставить несложно