Asp.net mvc 3 MVC Contrib网格在.OrderBy()上失败,出现NHibernate异常

Asp.net mvc 3 MVC Contrib网格在.OrderBy()上失败,出现NHibernate异常,asp.net-mvc-3,nhibernate,fluent-nhibernate,mvccontrib-grid,Asp.net Mvc 3,Nhibernate,Fluent Nhibernate,Mvccontrib Grid,我一直在遵循使用MVC contrib创建网格的良好演练 然而,我的版本使用的是NHibernate,而不是linq to实体 代码在排序之前运行良好 public ActionResult Index(string clientName, int? countryId, GridSortOptions gridSortOptions, int? page) { var clientList = from c in this.ClientRepository.Qu

我一直在遵循使用MVC contrib创建网格的良好演练

然而,我的版本使用的是NHibernate,而不是linq to实体

代码在排序之前运行良好

    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);
    }
如果我取消注释行
.OrderBy(gridSortOptions.Column,gridSortOptions.Direction)
它将在使用
System.NotSupportedException{“NewExpression”}点击视图时失败

有没有办法解决这个问题


非常感谢,科汉。

解决了这个问题。。。只需在应用过滤和排序之后再强制转换视图模型

  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);