我正在尝试在我的函数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。
答案 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();
}