• 封装一个ISortable接口


    using System;
    /// <summary>
    /// 排序规范
    /// </summary>
    /// <typeparam name="T"></typeparam>
    using System.Linq.Expressions;
    public interface ISortable<T>
    {
    /// <summary>
    /// 递增
    /// </summary>
    /// <typeparam name="TKey"></typeparam>
    /// <param name="keySelector"></param>
    /// <returns></returns>
    ISortable<T> Asc<TKey>(global::System.Linq.Expressions.Expression<Func<T, TKey>> keySelector);
    /// <summary>
    /// 然后递增
    /// </summary>
    /// <typeparam name="TKey1"></typeparam>
    /// <typeparam name="TKey2"></typeparam>
    /// <param name="keySelector1"></param>
    /// <returns></returns>
    ISortable<T> ThenAsc<TKey>(Expression<Func<T, TKey>> keySelector);
    /// <summary>
    /// 递减
    /// </summary>
    /// <typeparam name="TKey"></typeparam>
    /// <param name="keySelector"></param>
    /// <returns></returns>
    ISortable<T> Desc<TKey>(global::System.Linq.Expressions.Expression<Func<T, TKey>> keySelector);
    /// <summary>
    /// 然后递减
    /// </summary>
    /// <typeparam name="TKey"></typeparam>
    /// <param name="keySelector"></param>
    /// <returns></returns>
    ISortable<T> ThenDesc<TKey>(Expression<Func<T, TKey>> keySelector);
    /// <summary>
    /// 排序后的结果集
    /// </summary>
    global::System.Linq.IQueryable<T> Queryable { get; }
    }

    实现接口:

    using System;
    using System.Linq;
    using System.Linq.Expressions;
    namespace EntityFrameworks.Data.Core
    {
    /// <summary>
    /// Linq架构里对集合排序实现
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public class Orderable<T> : ISortable<T>
    {
    private IQueryable<T> _queryable;

    /// <summary>
    /// 排序后的结果集
    /// </summary>
    /// <param name="enumerable"></param>
    public Orderable(IQueryable<T> enumerable)
    {
    _queryable = enumerable;
    }

    /// <summary>
    /// 排序之后的结果集
    /// </summary>
    public IQueryable<T> Queryable
    {
    get { return _queryable; }
    }
    /// <summary>
    /// 递增
    /// </summary>
    /// <typeparam name="TKey"></typeparam>
    /// <param name="keySelector"></param>
    /// <returns></returns>
    public ISortable<T> Asc<TKey>(Expression<Func<T, TKey>> keySelector)
    {
    _queryable = (_queryable as IOrderedQueryable<T>)
    .OrderBy(keySelector);
    return this;
    }
    /// <summary>
    /// 然后递增
    /// </summary>
    /// <typeparam name="TKey"></typeparam>
    /// <param name="keySelector"></param>
    /// <returns></returns>
    public ISortable<T> ThenAsc<TKey>(Expression<Func<T, TKey>> keySelector)
    {
    _queryable = (_queryable as IOrderedQueryable<T>)
    .ThenBy(keySelector);
    return this;
    }
    /// <summary>
    /// 递减
    /// </summary>
    /// <typeparam name="TKey"></typeparam>
    /// <param name="keySelector"></param>
    /// <returns></returns>
    public ISortable<T> Desc<TKey>(Expression<Func<T, TKey>> keySelector)
    {
    _queryable = _queryable
    .OrderByDescending(keySelector);
    return this;
    }
    /// <summary>
    /// 然后递减
    /// </summary>
    /// <typeparam name="TKey"></typeparam>
    /// <param name="keySelector"></param>
    /// <returns></returns>
    public ISortable<T> ThenDesc<TKey>(Expression<Func<T, TKey>> keySelector)
    {
    _queryable = (_queryable as IOrderedQueryable<T>)
    .ThenByDescending(keySelector);
    return this;
    }
    }
    }

  • 相关阅读:
    java.net.SocketException: Unconnected sockets not implemented 解
    ios 瀑布流
    IOS --- 日期时间格式 更改
    平衡二叉树(常问问题)
    Oracle 学习笔记 17 -- 异常处理(PL/SQL)
    【Java先进】Lock、通过使用线程池
    兼容 谷歌、火狐、360系列浏览器桌面通知()有用
    iOS截取特定的字符串(正则匹配)
    改造世界、知行合一、实践论、学以致用
    如何理解“哲学家们只是用不同的方式解释世界,而问题在于改变世界”?
  • 原文地址:https://www.cnblogs.com/niuzaihenmang/p/5608120.html
Copyright © 2020-2023  润新知