2015-04-04 25 views
1

我目前正在篩選具有與這些課程相關的課程和項目的頁面。我想訂購那些獲得最多投票美元的項目 - 屬性vote_amount。我無法弄清楚如何通過控制器處理這個問題,但是我可以很容易地在視圖中執行此操作,但是,我收到一個錯誤消息。OrderBy MVC5中的Linq表達式asp.net查看意見

我有一個循環裏面的循環,它工作得很好,但我需要訂購。

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表達式使用lambda表達式作爲參數傳遞給動態調度操作,而不首先將其強制轉換爲委託或表達式樹類型

我知道我應該保持這種東西在此控制器,但是,我有麻煩通過我希望在另一個循環內的項目數組獲得期望的順序。 任何意見,將不勝感激。

回答

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

我仍然收到錯誤消息。無法首先將lambda表達式轉換爲委託或表達式樹類型,不能將lambda表達式用作動態調度操作的參數。希望這更靈活。 – devzim 2015-04-04 01:08:37

+0

而不是'var item',嘗試給項目列出課程的類值,例如:'foreach(ViewBag.Courses中的CoursesModel項目)' – 2015-04-04 01:17:12

+0

仍然沒有成功。我目前有foreach(項目項目在((List )@ item.Projects.OrderByDescending(x => x.total_votes))) { – devzim 2015-04-04 04:29:54