Pha*_*tom 3 c# linq asp.net-mvc entity-framework dynamic-linq
我在尝试对 Order 表中没有的任何列进行排序时遇到此错误,如果我使用OrderBy("Customer.CompanyName" + " " + sortDir)
该错误将消失但所有列都将无法排序。下面OrderBy
使用的方法来自这里。
问题的原因是什么?
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,
//......
//......
//......
});
Run Code Online (Sandbox Code Playgroud)
您提供链接的类被标记为internal
,并且不能在定义它的程序集之外使用,因此您不能在代码中使用它。
此 API 支持产品基础结构,不应直接从您的代码中使用。提供从 LinqDataSource 控件中的值创建新类的功能。
所以你实际上尝试使用的是OrderBy内部Queryable
类,它是其中的一部分System.Linq
,可以如下使用:
.OrderBy(x=> x.sortCol + " " + x.sortDir)
Run Code Online (Sandbox Code Playgroud)
如果您尝试按两列排序,则可以使用:
.OrderBy(x=> x.sortCol).ThenBy(x=> x.sortDir)
Run Code Online (Sandbox Code Playgroud)
如果要动态指定 OrderBy 表达式,可以为每个可能的参数执行 switch 语句,或者按照此SO Answer构建动态表达式树。
归档时间: |
|
查看次数: |
7898 次 |
最近记录: |