我在尝试排序不在Order表中的任何列时遇到此错误,如果我使用OrderBy("Customer.CompanyName" + " " + sortDir)
错误将会消失,但所有列都将无法排序。下面使用的OrderBy
方法来自here。
问题的原因是什么?
public ActionResult WebGrid(int page = 1, int rowsPerPage = 10, string sortCol = "OrderID", string sortDir = "ASC")
{
List<Order> res;
using (var nwd = new NorthwindEntities())
{
var _res = nwd.Orders
.OrderBy(sortCol + " " + sortDir)
.Select(o => new Order
{
OrderID = o.OrderID,
OrderDate = o.OrderDate,
CompanyName = o.Customer.CompanyName,
FirstName = o.Employee.FirstName,
//......
//......
//......
});
答案 0 :(得分:4)
您提供链接的类标记为internal
,并且无法在其定义的程序集之外使用,因此您无法在代码中使用它。
此API支持产品基础架构,但并非如此 直接从您的代码中使用。提供创建新功能 来自LinqDataSource控件中的值的类。
那么您实际尝试使用的是Queryable
类OrderBy,它是System.Linq
的一部分,可以使用如下:
.OrderBy(x=> x.sortCol + " " + x.sortDir)
如果您尝试按两列排序,则可以使用:
.OrderBy(x=> x.sortCol).ThenBy(x=> x.sortDir)
如果要动态指定OrderBy表达式,可以为每个可能的参数执行switch语句,或者按照此SO Answer构建动态表达式树。