Выражение OrderBy Linq в MVC5 asp.net Посмотреть совет

1

В настоящее время я фильтрую страницу с курсами и проектами, связанными с этими курсами. Я хочу заказать те проекты, по которым один получил наибольшее количество голосов - атрибут vote_amount. У меня возникли проблемы с выяснением, как справиться с этим через контроллер, и я могу легко сделать это в представлении, однако, я получаю сообщение об ошибке.

У меня есть цикл внутри цикла, и он работает достаточно хорошо, но мне нужно заказать.

    foreach (var item in ViewBag.Courses)
    {
           <h2> item.CourseName <h2> 
           foreach (var project in item.Projects.OrderBy(project => project.vote_amount)
           { 
               <h2> project.Name <h2>
           }


     }

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

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

Теги:
linq
razor
view
asp.net-mvc-5

1 ответ

1

вы пытались заказать его перед циклом foreach?

foreach (var item in ViewBag.Courses)
{
    <h2> item.CourseName <h2>
    item.Projects = item.Projects.OrderBy(project => project.vote_amount).toList(); 

    foreach (var project in item.Projects)
    { 
         <h2> project.Name <h2>
    }
}
  • 0
    Я все еще получаю ошибку. Нельзя использовать лямбда-выражение в качестве аргумента для динамически отправляемой операции без предварительного приведения его к типу дерева делегата или выражения. Хотелось бы, чтобы это было более гибким.
  • 0
    вместо var item попробуйте присвоить элементу значение класса из списка Courses, например: foreach (CoursesModel item in ViewBag.Courses)
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню