Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 用动态Linq替换当前Linq OrderBy_Asp.net Mvc_Linq_Asp.net Mvc 4 - Fatal编程技术网

Asp.net mvc 用动态Linq替换当前Linq OrderBy

Asp.net mvc 用动态Linq替换当前Linq OrderBy,asp.net-mvc,linq,asp.net-mvc-4,Asp.net Mvc,Linq,Asp.net Mvc 4,我的操作方法中包含以下代码,以按数据排序:- if (String.IsNullOrEmpty(sort)) { vm = repository.FindVMs(withOutSpace).OrderBy(a => a.Technology.PartialSerial).ToPagedList(page, pagesize); } else if(sort == "server_desc") { vm = repository.FindVMs(withOutSpace).O

我的操作方法中包含以下代码,以按数据排序:-

if (String.IsNullOrEmpty(sort))
{
    vm = repository.FindVMs(withOutSpace).OrderBy(a => a.Technology.PartialSerial).ToPagedList(page, pagesize);
}
else if(sort == "server_desc")
{
    vm = repository.FindVMs(withOutSpace).OrderByDescending(a => a.ITServer.Technology.PartialSerial).ToPagedList(page, pagesize);
    ViewBag.ServerSortPam = "server_ans";
}
else 
{
    vm = repository.FindVMs(withOutSpace).OrderBy(a => a.ITServer.Technology.PartialSerial).ToPagedList(page, pagesize);
    ViewBag.ServerSortPam = "server_desc";
}
我已经安装了
Linq.Dynamics
,但我不确定如何替换当前代码以使用动态Linq查询,这样我就不必为不同的排序参数手动编写单独的orderBY语句

主要是根据传递的参数动态生成“
OrderByDescending(a=>a.ITServer.Technology.PartialSerial)
”&“
OrderBy(a=>a.ITServer.Technology.PartialSerial)
”,而不必编写两个不同的linq查询


谢谢

使用动态linq时,OrderBy和OrderByDecending子句看起来像这样:

OrderBy("ITServer.Technology.PartialSerial")

如果您想摆脱额外的If语句,传递标志而不是字符串值可能会有所帮助。例如:

IQueryable<SomeEntityType> ApplySort(IQueryable<SomeEntityType> query, bool? sortByPartialAsc)
{
    var sb = new StringBuilder();

    sb.Append("ITServer.Technology.PartialSerial");

    if (sortByPartialAsc == false) sb.Append(" DESC");

    return query.OrderBy(sb.ToString());
}
IQueryable ApplySort(IQueryable查询,bool?sortByPartialAsc)
{
var sb=新的StringBuilder();
sb.追加(“IT服务器技术部分序列”);
如果(sortByPartialAsc==false)某人追加(“说明”);
返回query.OrderBy(sb.ToString());
}
根据视图模型生成排序参数的方式,此方法可能需要进行一些调整,但您应该了解这一点

我一直在更新Dynamic Linq,以防您感兴趣。

IQueryable<SomeEntityType> ApplySort(IQueryable<SomeEntityType> query, bool? sortByPartialAsc)
{
    var sb = new StringBuilder();

    sb.Append("ITServer.Technology.PartialSerial");

    if (sortByPartialAsc == false) sb.Append(" DESC");

    return query.OrderBy(sb.ToString());
}