在项目:WaterCloud.Data\Extensions\SqlSugarExtensions.cs文件中修改方法:
注释代码为框架自带代码
public static async Task<List<T>> ToPageListAsync<T>(this ISugarQueryable<T> query, SoulPage<T> pagination)
{
var tempData = query;
List<FilterSo> filterSos = pagination.getFilterSos();
if (filterSos != null && filterSos.Count > 0)
{
tempData = tempData.GenerateFilter("a", filterSos);
}
#region 修改内容
if (pagination.order.Contains(","))
{
string orderByStr = "";
var fieldArray = pagination.field.Split(',');
var orderArray = pagination.order.Split(',');
for (int i = 0; i < fieldArray.Length; i++)
{
orderByStr += $"{fieldArray[i]} {orderArray[i]},";
}
if (!string.IsNullOrEmpty(orderByStr))
{
tempData = tempData.OrderBy(orderByStr.Substring(0, orderByStr.Length - 1));
}
}
else
{
if (pagination.order == "desc")
{
tempData = tempData.OrderBy(pagination.field + " " + pagination.order);
}
else
{
tempData = tempData.OrderBy(pagination.field);
}
}
#endregion
#region 框架原有内容
// if (pagination.order == "desc")
//{
// tempData = tempData.OrderBy(pagination.field + " " + pagination.order);
//}
//else
//{
// tempData = tempData.OrderBy(pagination.field);
//}
#endregion
RefAsync<int> totalCount = 0;
var data = await tempData.ToPageListAsync(pagination.page, pagination.rows, totalCount);
pagination.count = totalCount;
return data;
}
public static async Task<List<T>> ToPageListAsync<T>(this ISugarQueryable<T> query, Pagination pagination)
{
var tempData = query;
RefAsync<int> totalCount = 0;
#region 修改内容
if (pagination.order.Contains(","))
{
string orderByStr = "";
var fieldArray = pagination.field.Split(',');
var orderArray = pagination.order.Split(',');
for (int i = 0; i < fieldArray.Length; i++)
{
orderByStr += $"{fieldArray[i]} {orderArray[i]},";
}
if (!string.IsNullOrEmpty(orderByStr))
{
tempData = tempData.OrderBy(orderByStr.Substring(0, orderByStr.Length - 1));
}
}
else
{
if (pagination.order == "desc")
{
tempData = tempData.OrderBy(pagination.field + " " + pagination.order);
}
else
{
tempData = tempData.OrderBy(pagination.field);
}
}
#endregion
#region 框架原有内容
// if (pagination.order == "desc")
//{
// tempData = tempData.OrderBy(pagination.field + " " + pagination.order);
//}
//else
//{
// tempData = tempData.OrderBy(pagination.field);
//}
#endregion
var data = await tempData.ToPageListAsync(pagination.page, pagination.rows, totalCount);
pagination.records = totalCount;
return data;
}
在使用时可以给pagination.field和pagination.order传多个排序条件,以逗号分隔