C# DataTables多排序列.net mvc提示
我使用的是Datatables Jquery扩展,我对这些帖子进行了多重排序: 我的问题是,在本例中,这两种方法取决于我在控制器中使用的模型 例如,如果我需要在其他控制器中使用类似的代码,我需要复制该代码,并与其他控制器一起更改模型字段和类型 在我看来,这不是很干 如何进行?控制器是否适合这两种方法C# DataTables多排序列.net mvc提示,c#,asp.net-mvc,datatables,C#,Asp.net Mvc,Datatables,我使用的是Datatables Jquery扩展,我对这些帖子进行了多重排序: 我的问题是,在本例中,这两种方法取决于我在控制器中使用的模型 例如,如果我需要在其他控制器中使用类似的代码,我需要复制该代码,并与其他控制器一起更改模型字段和类型 在我看来,这不是很干 如何进行?控制器是否适合这两种方法 private IOrderedQueryable<User> CreateSortedQuery(DataTableParameterModel parameterModel, IQu
private IOrderedQueryable<User> CreateSortedQuery(DataTableParameterModel parameterModel, IQueryable<User> baseQuery)
{
var orderedQuery = (IOrderedQueryable<User>)baseQuery;
for (int i = 0; i < parameterModel.iSortingCols; ++i)
{
var ascending = string.Equals("asc", parameterModel.sSortDir[i], StringComparison.OrdinalIgnoreCase);
int sortCol = parameterModel.iSortCol[i];
Expression<Func<User, string>> orderByExpression = GetOrderingFunc(sortCol);
if (orderByExpression != null)
{
if (ascending)
{
orderedQuery = (i == 0)
? orderedQuery.OrderBy(orderByExpression)
: orderedQuery.ThenBy(orderByExpression);
}
else
{
orderedQuery = (i == 0)
? orderedQuery.OrderByDescending(orderByExpression)
: orderedQuery.ThenByDescending(orderByExpression);
}
}
else
{
if (ascending)
{
orderedQuery = (i == 0)
? orderedQuery.OrderBy(c => c.Id)
: orderedQuery.ThenBy(c => c.Id);
}
else
{
orderedQuery = (i == 0)
? orderedQuery.OrderByDescending(c => c.Id)
: orderedQuery.ThenByDescending(orderByExpression);
}
}
}
return orderedQuery;
}
private Expression<Func<User, string>> GetOrderingFunc(int ColumnIndex)
{
Expression<Func<User, string>> InitialorderingFunction;
switch (ColumnIndex)
{
case 1:
InitialorderingFunction = c => c.FirstName;
break;
case 2:
InitialorderingFunction = c => c.LastName;
break;
case 3:
InitialorderingFunction = c => c.UserName;
break;
case 4:
InitialorderingFunction = c => c.Email;
break;
case 5:
InitialorderingFunction = c => c.BusinessName;
break;
default:
InitialorderingFunction = null;
break;
}
return InitialorderingFunction;
}
我想,你的问题与这两个答案非常接近: :
用这些解决方案来检查这个答案,谢谢你的评论,我得到了一个类似的解决方案
public static RouteValueDictionary GetInfo<T,P>(this HtmlHelper html, Expression<Func<T, P>> action) where T : class
{
var expression = (MemberExpression)action.Body;
string fieldName = expression.Member.Name;
var result = data
.Where(/* ... */)
.Select(/* ... */)
.OrderBy(fieldName + " asc");