0

我似乎在让我的 jqgrids 在我的 asp.net mvc 项目中与 linq to sql 一起正常工作时遇到问题。

我遇到的问题是正确使用 sidx 和 sord 参数。我发现的大多数资源都说要做类似的事情

var questions = context.Questions
  .OrderBy(sidx + " " + sord)
  .Skip(pageIndex * pageSize)
  .Take(pageSize);

在 Visual Studio 2010(.net 4 项目,MVC2)中,我在 order by 上遇到编译错误,因为似乎没有 linq orderby 扩展只接受一个字符串作为参数,他们都想要一个委托/lamda。

如何在我的应用程序中实现排序,以便我的网格可以按列正确排序?

4

2 回答 2

1

您可以制作将字符串转换为 lambda 表达式的方法。我没有对此进行测试,但可能是这样的:

private Expression<Func<Person, T>> orderbyExpression(string column)
{
    switch (column)
    {
       case: "Name":
           return p => p.Name;

       case: "Sex":
          return p => p.Sex;
    }

}

您还必须单独整理 asc/desc 设置

于 2010-07-14T15:27:27.160 回答
0

如果添加“使用 System.Linq.Dynamic;” 您粘贴的代码应该可以正常工作。

这里有一个小考虑:OrderBySkip一起出现,所以如果你想跳到一条记录,应该指定 OrderBy。我通过检查是否有发布 orderby 字段参数来解决这个问题。

using System.Linq.Dynamic;
...

{
    var questions = context.Questions;
    if (!string.IsNullOrEmpty(sidx))
        questions = questions.OrderBy(sidx + " " + sord).Skip(pageIndex * pageSize);

    return questions.Take(pageSize);
}

这个主题也很有用: jqGrid,排序 Linq 表达式的问题

于 2012-12-18T12:16:17.080 回答