ow
This commit is contained in:
1 parent
31fbe199c1
commit
1c0c83af5f
469 files changed
+62544
-5
No files matched your search
@@ -0,0 +1,84 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace CloudBuilder.Core.Extensions
|
||||
{
|
||||
/// <summary>
|
||||
/// 列表字段排序条件
|
||||
/// </summary>
|
||||
public class SortCondition
|
||||
{
|
||||
/// <summary>
|
||||
/// 初始化一个<see cref="SortCondition"/>类型的新实例
|
||||
/// </summary>
|
||||
public SortCondition() : this(null)
|
||||
{ }
|
||||
|
||||
/// <summary>
|
||||
/// 构造一个指定字段名称的升序排序的排序条件
|
||||
/// </summary>
|
||||
/// <param name="sortField">字段名称</param>
|
||||
public SortCondition(string sortField)
|
||||
: this(sortField, ListSortDirection.Ascending)
|
||||
{ }
|
||||
|
||||
/// <summary>
|
||||
/// 构造一个排序字段名称和排序方式的排序条件
|
||||
/// </summary>
|
||||
/// <param name="sortField">字段名称</param>
|
||||
/// <param name="listSortDirection">排序方式</param>
|
||||
public SortCondition(string sortField, ListSortDirection listSortDirection)
|
||||
{
|
||||
SortField = sortField;
|
||||
ListSortDirection = listSortDirection;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置 排序字段名称
|
||||
/// </summary>
|
||||
public string SortField { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置 排序方向
|
||||
/// </summary>
|
||||
public ListSortDirection ListSortDirection { get; set; }
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 支持泛型的列表字段排序条件
|
||||
/// </summary>
|
||||
/// <typeparam name="T">列表元素类型</typeparam>
|
||||
public class SortCondition<T> : SortCondition
|
||||
{
|
||||
/// <summary>
|
||||
/// 使用排序字段 初始化一个<see cref="SortCondition"/>类型的新实例
|
||||
/// </summary>
|
||||
public SortCondition(Expression<Func<T, object>> keySelector)
|
||||
: this(keySelector, ListSortDirection.Ascending)
|
||||
{ }
|
||||
|
||||
/// <summary>
|
||||
/// 使用排序字段与排序方式 初始化一个<see cref="SortCondition"/>类型的新实例
|
||||
/// </summary>
|
||||
public SortCondition(Expression<Func<T, object>> keySelector, ListSortDirection listSortDirection)
|
||||
: base(GetPropertyName(keySelector), listSortDirection)
|
||||
{ }
|
||||
|
||||
/// <summary>
|
||||
/// 从泛型委托获取属性名
|
||||
/// </summary>
|
||||
private static string GetPropertyName(Expression<Func<T, object>> keySelector)
|
||||
{
|
||||
string param = keySelector.Parameters.First().Name;
|
||||
string operand = ((dynamic)keySelector.Body).Operand.ToString();
|
||||
operand = operand.Substring(param.Length + 1, operand.Length - param.Length - 1);
|
||||
return operand;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user