从动态linq订购属性

时间:2010-04-06 15:08:19

标签: linq dynamic properties sql-order-by

我使用动态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尽可能多地处理搜索/排序,而不需要使用反射来提取数千条记录并在代码中对它们进行排序。

1 个答案:

答案 0 :(得分:0)

计算类当然不会起作用,因为你正在尝试创建记录,它是内存的一部分,属于数据库。

但是,您可以通过在linq查询中指定函数来计算数据库中的相同内容,例如: items = items             .OrderBy(x => x.approved_id!= null)             .Skip(pageIndex * pageSize)             。取(pageSize的);