orderbydescending的动态linq查询 [英] Dynamic linq query for orderbydescending
问题描述
我正在使用mvc4 nuget包动态linq查询for orderby。我被困在这里。任何人都可以使用System.Linq.Dynamic帮助
;
public ActionResult Index(int? page,string sortOrder,string sortvarOrder)
{
ViewBag.NameSortParm = String.IsNullOrEmpty(sortvarOrder)? sortOrder_desc:sortOrder_asc;
int pageSize = 5;
int pageNumber =(page ?? 1);
var printerMaster = db.PrinterMasters.Include(x => x.WarehouseMaster);
if(sortOrder!= null)
{
if(ViewBag.NameSortParm == sortOrder_asc)
{
var result = db.PrinterMasters.OrderBy(sortOrder) .ToList();
返回视图(result.ToPagedList(pageNumber,pageSize));
}
else
{
var result1 = db.PrinterMasters.OrderByDescending(sortOrder)ToList();
返回View(result1.ToPagedList(pageNumber,pageSize));
}
}
其他
{
sortOrder =PrinterId;
var result = db.PrinterMasters.OrderBy(sortOrder).ToList();
返回View(result.ToPagedList(pageNumber,pageSize));
}
}
这个有用吗?我是mvc的新手。请帮助我
I am using mvc4 nuget package dynamic linq query for orderby. I was stuck at this. Can anyone help out Please
using System.Linq.Dynamic;
public ActionResult Index(int? page, string sortOrder,string sortvarOrder)
{
ViewBag.NameSortParm = String.IsNullOrEmpty(sortvarOrder) ? "sortOrder_desc":"sortOrder_asc";
int pageSize = 5;
int pageNumber = (page ?? 1);
var printerMaster = db.PrinterMasters.Include(x => x.WarehouseMaster);
if (sortOrder != null)
{
if (ViewBag.NameSortParm == sortOrder_asc)
{
var result = db.PrinterMasters.OrderBy(sortOrder).ToList();
return View(result.ToPagedList(pageNumber, pageSize));
}
else
{
var result1 = db.PrinterMasters.OrderByDescending(sortOrder)ToList();
return View(result1.ToPagedList(pageNumber, pageSize));
}
}
else
{
sortOrder = "PrinterId";
var result = db.PrinterMasters.OrderBy(sortOrder).ToList();
return View(result.ToPagedList(pageNumber, pageSize));
}
}
will this work?? I am new to mvc. Please help me
推荐答案
create an extension method as below
public static class SortingExtension
{
public static IQueryable<T> OrderByField<T>(this IQueryable<T> q, string SortField, bool Ascending)
{
var param = Expression.Parameter(typeof(T), "p");
var prop = Expression.Property(param, SortField);
var exp = Expression.Lambda(prop, param);
string method = Ascending ? "OrderBy" : "OrderByDescending";
Type[] types = new Type[] { q.ElementType, exp.Body.Type };
var mce = Expression.Call(typeof(Queryable), method, types, q.Expression, exp);
return q.Provider.CreateQuery<T>(mce);
}
}
//Do the following changes in the Action To the QueryField pass the column_Name to sortBy and the true/false value if true it will sort by Ascending for false Descending
var printerMaster = db.PrinterMasters.Include(x => x.WarehouseMaster);
printerMaster.OrderByField(fieldName,true)
public ActionResult Index(int?page,string sortOrder,string sortvarOrder)
{
ViewBag.NameSortParm = sortvarOrder == sortOrder? sortOrder_desc:sortOrder;
var pi = ViewBag.NameSortParm;
int pageSize = 5;
ViewBag.pagesize = pageSize;
int pageNumber =(page ?? 1);
var printerMaster = db.PrinterMasters.Include(x => x.WarehouseMaster);
if(sortOrder!= null)
{
if(pi!=sortOrder_desc)
{
var result = db.PrinterMasters.OrderBy(sortOrder).ToList();
ViewBag.cnt = result.Count();
返回查看(result.ToPagedList(pageNumber,pageSize));
}
else
{
var result1 = db.PrinterMasters.OrderBy(it。+ sortOrder +desc)。ToList();
ViewBag.cnt = result1.Count ();
返回视图(result1.ToPagedList(pageNumber,pageSize));
}
}
否则
{
sortOrder =WarehouseID;
var result = db.PrinterMasters.OrderBy(sortOrder).ToList();
ViewBag.cnt = result.Count();
返回视图(result.ToPagedList(pageNumber,pageSize));
}
}
和我的观点::
@ Html.ActionLink(WarehouseName,Index,new {sortvarOrder = ViewBag.NameSortParm,sortOrder =PrinterID})
@ Html.ActionLink( PrinterName,Index,new {sortOrder =PrinterName,sortvarOrder = ViewBag.NameSortParm})
public ActionResult Index(int? page, string sortOrder,string sortvarOrder)
{
ViewBag.NameSortParm = sortvarOrder == sortOrder ? "sortOrder_desc" : sortOrder;
var pi = ViewBag.NameSortParm;
int pageSize = 5;
ViewBag.pagesize=pageSize;
int pageNumber = (page ?? 1);
var printerMaster = db.PrinterMasters.Include(x => x.WarehouseMaster);
if (sortOrder != null)
{
if (pi != "sortOrder_desc")
{
var result = db.PrinterMasters.OrderBy(sortOrder).ToList();
ViewBag.cnt = result.Count();
return View(result.ToPagedList(pageNumber, pageSize));
}
else
{
var result1 = db.PrinterMasters.OrderBy("it." + sortOrder + " desc").ToList();
ViewBag.cnt = result1.Count();
return View(result1.ToPagedList(pageNumber, pageSize));
}
}
else
{
sortOrder = "WarehouseID";
var result = db.PrinterMasters.OrderBy(sortOrder).ToList();
ViewBag.cnt=result.Count();
return View(result.ToPagedList(pageNumber, pageSize));
}
}
and my view::
@Html.ActionLink("WarehouseName", "Index", new { sortvarOrder = ViewBag.NameSortParm, sortOrder = "PrinterID" })
@Html.ActionLink("PrinterName", "Index", new { sortOrder = "PrinterName", sortvarOrder = ViewBag.NameSortParm })
这篇关于orderbydescending的动态linq查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!