0

私はthis MVC contribを使用してグリッドを作成するための素晴らしいウォークスルーに従っています。MVCコントリビュータがNHibernate Exceptionで.OrderBy()に失敗しました

私のバージョンはNHibernateを使用していますが、エンティティにはlinqを使用していません。

コードはソートの時点まで問題なく動作しています。私はライン.OrderBy(gridSortOptions.Column, gridSortOptions.Direction)のコメントを解除した場合

public ActionResult Index(string clientName, int? countryId, GridSortOptions gridSortOptions, int? page) 
    { 
     var clientList = from c in this.ClientRepository.Query 
         select new ListedClientViewModel(c); 

     //Set default sort column 
     if (string.IsNullOrWhiteSpace(gridSortOptions.Column)) 
      gridSortOptions.Column = "ClientName"; 

     // Filter on clientName 
     if (!string.IsNullOrWhiteSpace(clientName)) 
      clientList = clientList.Where(c => c.ClientName.StartsWith(clientName)); 

     // Filter on country 
     if (countryId.HasValue) 
      clientList = clientList.Where(c => c.CountryId == countryId); 

     // Order and page the clients 
     var clientPageList = clientList 
      //Sorting causes error. 
      //.OrderBy(gridSortOptions.Column, gridSortOptions.Direction) 
      .AsPagination(page ?? 1, 10); 

     var clientListContainer = new ClientListContainerViewModel 
     { 
      ClientPageList = clientPageList, 
      GridSortOptions = gridSortOptions 
     }; 

     return View(clientListContainer); 
    } 

それは私がこの問題を解決することができますどのようにSystem.NotSupportedException {"NewExpression"}

任意のアイデアを持つビューに当たったとき、それは失敗しますか?

多くのおかげで、Kohan。

答えて

0

解決済み...フィルタリングと順序付けが適用された後に、後でビューモデルをキャストするだけでした。

var clientList = this.ClientRepository.Query; 

    ... 
    ... 

    // Order and page the clients 
    var clientPageList = clientList 
     //Sorting no longer causes error. 
     .OrderBy(gridSortOptions.Column, gridSortOptions.Direction) 
     .Select(c => new ListedClientViewModel(c)) 
     .AsPagination(page ?? 1, 10); 
関連する問題