2009-10-05 4 views
1

Я передаю заполненный SelectList в мой вид, и я хочу по умолчанию выбрать выбранное значение в последней записи в списке. До сих пор я получил:Как получить последний объект в общем списке?

IQueryable<BuildNumber> projBuildNos = tcRepository.GetProjectBuildNos(); 
BuildList = new SelectList(projBuildNos, "ID", "value", projBuildNos.Last().ID); 

я получаю исключение, говоря «оператор запроса„Последний“не поддерживается, но я не могу показаться, чтобы получить в последней записи в моем родовом списке и не могут найти любые примеры.

Этот код является «моделью просмотра формы», передающей списки избранного из моего репозитория обратно в представление, и я думаю, что я должен выполнять это здесь. Однако я новичок в generics/mvc/linq, так что счастливы за альтернативные предложения.

Заранее благодарим за любую помощь. Пожалуйста, дайте мне знать, если вы хотите получить более подробную информацию.

ответ

5

Вы уже собираетесь сосать все результаты вашего запроса в память? Если это так, то я предлагаю вам выполнить свой запрос и получить результат в виде список:

List<BuildNumber> projBuildNos = tcRepository.GetProjectBuildNos().ToList(); 
BuildList = new SelectList(projBuildNos, "ID", "value", projBuildNos.Last().ID); 

В противном случае вы могли бы легко закончить с обходным путем, который выполняет запрос дважды - возможно, дают противоречивые результаты.

+0

Да, я заполняю SelectList, поэтому я использую весь набор результатов. Это трюк, ура! – daddywoodland

0

Возможно, это?

projBuildNos.Reverse().First().ID 
1

Я нашел это на MSDN:

Queryable.LastOrDefault - возвращает последний элемент в последовательности или значение по умолчанию, если последовательность не содержит элементов.

+0

Возможно, это связано с еще одним вызовом db? Если это так, я полагаю, что у меня есть все данные, поэтому просто хочу взять последнее значение. – daddywoodland

Смежные вопросы