我使用动态linq来创建一个用于处理来自MVC的通用JqGrid的泛型类,除了对代码属性进行排序外,所有工作都很好(搜索,分页等)。当我按下数据库对数据进行排序时,排序工作正常,但只要它是一个属性,我就使排序不起作用,例如
public partial class tblStockOrder
{
public string approved
{
get
{
return approved_id == null ? "" : "Approved";
}
}
}
我正在运行以下Dynamic Linq
items = items
.OrderBy(string.Format("{0} {1}", sidx, sord))
.Skip(pageIndex * pageSize)
.Take(pageSize);
sidx等是jquery传入的字符串。
所以基本上什么是处理某些属性来自db的情况的最佳解决方案,而其他属性将是代码属性(不确定正确的命名)。我可以使用反射在代码中处理所有这些,但显然希望DB尽可能多地处理搜索/排序,而不需要使用反射来提取数千条记录并在代码中对它们进行排序。
答案 0 :(得分:0)
计算类当然不会起作用,因为你正在尝试创建记录,它是内存的一部分,属于数据库。
但是,您可以通过在linq查询中指定函数来计算数据库中的相同内容,例如: items = items .OrderBy(x => x.approved_id!= null) .Skip(pageIndex * pageSize) 。取(pageSize的);