System.Linq.Dynamic.Core的行为与.Net MVC 5版本不同

时间:2018-09-28 16:00:56

标签: c# asp.net-core .net-core

我正在尝试在我的函数OrderBy中实现System.Linq.Dynamic.Core。由于某种原因,它会导致此错误

  

“列表”不包含“ OrderBy”的定义,最佳扩展方法重载“ DynamicQueryableExtensions.OrderBy(IQueryable,string,params object [])”要求接收器的类型为“ IQueryable”

List<UsersListViewModel> data = (from user in dbContext.Users
 select new UsersListViewModel
 {
     Id = user.Id,
     Name = user.FirstName + " " + user.LastName,
     UserName = user.UserName,
     Email = user.Email,
     PhoneNumber = user.PhoneNumber
 }).ToList();

 if (!(string.IsNullOrEmpty(Input.Order) && string.IsNullOrEmpty(Input.OrderDir)))
{
    var columnName = modelStructure.FirstOrDefault(f => f.Key == Convert.ToInt32(Input.Order));
    data = data.OrderBy(columnName.Value + " " + Input.OrderDir).ToList();
}

OrderBy不允许编译我的代码。在我的其他ASP.NET MVC 5应用程序中,可以添加System.Linq.Dynamic。

1 个答案:

答案 0 :(得分:2)

您应该将数据转换为IQueryable:

using System.Linq.Dynamic.Core;

    List<UsersListViewModel> data = (from user in dbContext.Users
     select new UsersListViewModel
     {
         Id = user.Id,
         Name = user.FirstName + " " + user.LastName,
         UserName = user.UserName,
         Email = user.Email,
         PhoneNumber = user.PhoneNumber
     }).ToList();

     if (!(string.IsNullOrEmpty(Input.Order) && string.IsNullOrEmpty(Input.OrderDir)))
    {
        var columnName = modelStructure.FirstOrDefault(f => f.Key == Convert.ToInt32(Input.Order));
        data = data.OrderBy(columnName.Value + " " + Input.OrderDir).ToList();
    }

     if (!(string.IsNullOrEmpty(Input.Order) && string.IsNullOrEmpty(Input.OrderDir)))
    {
        var columnName = modelStructure.FirstOrDefault(f => f.Key == Convert.ToInt32(Input.Order));
        data = data.AsQueryable().OrderBy(x=> x.).ToList();
    }
相关问题