如何修复 'No property or field exists in type' 错误?
How to fix 'No property or field exists in type' error?
我在尝试对不在订单 table 中的任何列进行排序时遇到此错误,如果我使用 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,
//......
//......
//......
});
您提供给 link 的 class 被标记为 internal
并且它不能在它定义的程序集之外使用,所以您不能使用它在你的代码中。
This API supports the product infrastructure and is not intended to be
used directly from your code. Provides functionality to create new
classes from values in a LinqDataSource control.
所以您实际尝试使用的是 Queryable
class 中的 OrderBy,它是 System.Linq
的一部分,可以按如下方式使用:
.OrderBy(x=> x.sortCol + " " + x.sortDir)
如果您尝试按两列排序,则可以使用:
.OrderBy(x=> x.sortCol).ThenBy(x=> x.sortDir)
如果你想动态指定 OrderBy 表达式,你可以为每个可能的参数做一个 switch 语句,或者按照这个 构建一个动态表达式树。
我在尝试对不在订单 table 中的任何列进行排序时遇到此错误,如果我使用 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,
//......
//......
//......
});
您提供给 link 的 class 被标记为 internal
并且它不能在它定义的程序集之外使用,所以您不能使用它在你的代码中。
This API supports the product infrastructure and is not intended to be used directly from your code. Provides functionality to create new classes from values in a LinqDataSource control.
所以您实际尝试使用的是 Queryable
class 中的 OrderBy,它是 System.Linq
的一部分,可以按如下方式使用:
.OrderBy(x=> x.sortCol + " " + x.sortDir)
如果您尝试按两列排序,则可以使用:
.OrderBy(x=> x.sortCol).ThenBy(x=> x.sortDir)
如果你想动态指定 OrderBy 表达式,你可以为每个可能的参数做一个 switch 语句,或者按照这个