我有一个GetX(DataTableParameters模型)函数,其中model.Order包含Column(可以是1(Id),2(Name)等)和Dir(可以是'asc'或'desc')。然后我有一个LINQ查询,我想动态生成OrderByDescending或OrderBy和r => r.Id或r => r.Name取决于型号值。
/root:
File: root
Directory: /
/dev/data1:
File: data1
Directory: /dev
/dev/data1/data3:
File: data3
Directory: /dev/data1
/usr/local/oravg/oradat:
File: oradat
Directory: /usr/local/oravg
可以这样做吗?如果是这样,任何人都可以指出我正确的方向。谢谢你的帮助。
答案 0 :(得分:1)
使用动态Linq ,有一些库可以帮助您使用它。我正在使用它,它看起来很棒,请在这里查看更多信息
它是一个来自旧库的分支,它突然被删除了,它允许你编写像
这样的动态代码scale_x_continuous("Standard Length [mm]",limits=c(30,85),breaks=c(30,35,40,45,50,55,60,65,70,75,80,85))
查看http://web.archive.org/web/20160109203827/http://dynamiclinq.azurewebsites.net/(旧库的文档)以获得良好的概述。
答案 1 :(得分:1)
看起来你正在使用DataTables。我有相同的场景,并编写了一些代码,利用PagedList nuget package为DataTables提供分页,可排序的JSON数据。
用法如下:
[HttpPost]
public JsonResult GetJson(DataTablesParam param)
{
using (var context = new SalesContext())
{
return context.Sales
.TrustedSortToPagedList(param.ToPagingCriteria())
.Select(s => new SaleViewModel(s))
.ToDataTableResult(param.Draw);
}
}
在javascript中,我在DataTable配置中包含此参数:
ajax: {
contentType: 'application/json; charset=utf-8',
dataType: 'json',
url: "@Url.Action("GetJson")",
type: "POST",
data: function(d) {
// add extra query parameters here
d.startDate = $("#startDate").val();
d.endDate = $("#endDate").val();
return JSON.stringify(d);
},
},
完整代码可在此gist中找到。
答案 2 :(得分:1)
var query=DbContext
.Users
.Where(r => r.FirstName.Contains(model.Search.Value) ||
r.LastName.Contains(model.Search.Value) ||
r.Email.Contains(model.Search.Value));
switch(Model.Order)
{
case 1:
query=(Model.Dir=="asc")?
query.OrderBy(q=>q.id):
query.OrderByDescending(q=>q.id);
break;
case 2:
query=(Model.Dir=="asc")?
query.OrderBy(q=>q.Name):
query.OrderByDescending(q=>q.Name);
break;
}
query=query
.Skip(Model.Start)
.Take(Model.Length);