基于QueryString在Linq to Entities中自定义排序

时间:2011-09-24 10:08:15

标签: c# asp.net-mvc-3 entity-framework linq-to-entities

花了一整天的时间试图找到准备使用的解决方案“在查询字符串的LINQ基础上排序数据”,没有任何结果。

所以,我有一个LINQ查询:

public AcrionResult MyAction(int perPage = 10, string orderBy = "DESC", sting sortBy = "id")
{
    var some = from m in db.Some select new ExampleModel {id = m.id, some = m.some};
    return View(some);
}

从上面的例子:
1. perPage描述我们应该在页面中显示多少项目 2. orderBy DESC或ASC订单 3. sortBy可以是ViewModel的一些字段

我需要像这样做一些:

var query = some.OrderFilter(...)。AmountFilter(...)。SortByFilter(...)

有人能帮助我吗?

非常感谢!

2 个答案:

答案 0 :(得分:2)

您可以使用dynamic LINQ。这是实现动态查询的another example

答案 1 :(得分:0)

页面大小最好由TakeSkip处理 - LINQ to Entities会将其转换为SQL。

参数化排序可以通过基于所选属性创建表达式树并根据需要将其传递给OrderByOrderByDescending来完成。或者通过使用Entity-LINQ从字段名称构建SQL。

后一个apporoach需要列出列名列表以避免SQL注入..