LINQ и PagedList как сделать заказпо

у меня есть следующая таблица:

id   serialcode    timestamp
1       0001       01/02/2015
2       0001       02/02/2015
3       0001       03/02/2015
4       0002       03/02/2015

В linq я получил максимальный идентификатор для сгруппированного серийного кода и упорядочил результат по убыванию метки времени. Так что я:

var list = db.mytable.GroupBy(x => x.serialcode).Select(g => g.OrderByDescending(x => x.id).FirstOrDefault()).OrderByDescending(x => x.timestamp);

Я получаю следующие строки:

id   serialcode    timestamp
3       0001       03/02/2015
4       0002       03/02/2015

Теперь я хочу отфильтровать строки, например, по серийному коду и использовать список страниц mvc для подкачки результатов. Я пытался:

var list = db.mytable.GroupBy(x => x.serialcode).Select(g => g.OrderByDescending(x => x.id).FirstOrDefault());

list = list.Where(x => x.serialcode == myserialcode);

list.OrderByDescending(x => x.timestamp);
....
....
return View(list.ToPagedList(pageNumber, pageSize));

Но у меня есть следующая ошибка: «Метод Skip поддерживается только для отсортированного ввода в LINQ to Entities. Метод OrderBy должен вызываться перед методом Skip».

В чем проблема? Я заказал результирующий набор!?


person Tom    schedule 17.02.2015    source источник


Ответы (2)


вы забыли назначить

list = list.OrderByDescending(x => x.timestamp);
person Mike Tsayper    schedule 17.02.2015

вам нужно присвоить результат list.OrderByDescending(x => x.timestamp); объекту list.

 list = list.OrderByDescending(x => x.timestamp);

OrderByDescending возвращает IOrderedEnumerable<TSource>

Посмотрите документацию Microsoft здесь.

person Jenish Rabadiya    schedule 17.02.2015