using System;
using System.Linq;
using System.Linq.Expressions;
namespace APT.Infrastructure.Core
{
///
/// Linq架构里对集合排序实现
///
///
public class Orderable : IOrderable
{
private IQueryable _queryable;
///
/// 排序后的结果集
///
///
public Orderable(IQueryable enumerable)
{
_queryable = enumerable;
}
///
/// 排序之后的结果集
///
public IQueryable Queryable
{
get { return _queryable; }
}
///
/// 递增
///
///
///
///
public IOrderable Asc(Expression> keySelector)
{
_queryable = (_queryable as IOrderedQueryable)
.OrderBy(keySelector);
return this;
}
///
/// 然后递增
///
///
///
///
public IOrderable ThenAsc(Expression> keySelector)
{
_queryable = (_queryable as IOrderedQueryable)
.ThenBy(keySelector);
return this;
}
///
/// 递减
///
///
///
///
public IOrderable Desc(Expression> keySelector)
{
_queryable = _queryable
.OrderByDescending(keySelector);
return this;
}
///
/// 然后递减
///
///
///
///
public IOrderable ThenDesc(Expression> keySelector)
{
_queryable = (_queryable as IOrderedQueryable)
.ThenByDescending(keySelector);
return this;
}
}
}