123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217 |
- using Ant.Data;
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Linq.Expressions;
- namespace Ant.ORM
- {
- public interface IQuery<T>
- {
- IQuery<T> AsTracking();
- IEnumerable<T> AsEnumerable();
- /// <summary>
- /// 显示列
- /// </summary>
- /// <typeparam name="TResult"></typeparam>
- /// <param name="selector"></param>
- /// <returns></returns>
- IQuery<TResult> Select<TResult>(Expression<Func<T, TResult>> selector);
- /// <summary>
- /// 查询条件
- /// </summary>
- /// <param name="predicate"></param>
- /// <returns></returns>
- IQuery<T> Where(Expression<Func<T, bool>> predicate);
- /// <summary>
- /// 用IN作为查询条件的SQL语句
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <typeparam name="TValue"></typeparam>
- /// <param name="source"></param>
- /// <param name="propertySelector"></param>
- /// <param name="values"></param>
- /// <returns></returns>
- IQuery<T> WhereIn(Expression<Func<T, object>> propertySelector, params object[] values);
- /// <summary>
- /// 默认排序
- /// </summary>
- /// <typeparam name="K"></typeparam>
- /// <param name="predicate"></param>
- /// <returns></returns>
- IOrderedQuery<T> OrderBy<K>(Expression<Func<T, K>> predicate);
- /// <summary>
- /// 降序排序
- /// </summary>
- /// <typeparam name="K"></typeparam>
- /// <param name="predicate"></param>
- /// <returns></returns>
- IOrderedQuery<T> OrderByDesc<K>(Expression<Func<T, K>> predicate);
- /// <summary>
- /// 跳过序列中的指定位置之前的元素
- /// </summary>
- /// <param name="count"></param>
- /// <returns></returns>
- IQuery<T> Skip(int count);
- /// <summary>
- /// 提前序列中的指定位置之前的元素(TOP取条数据)
- /// </summary>
- /// <param name="count"></param>
- /// <returns></returns>
- IQuery<T> Top(int count);
- /// <summary>
- /// 对共享公共特性元素进行分组
- /// </summary>
- /// <typeparam name="K"></typeparam>
- /// <param name="predicate"></param>
- /// <returns></returns>
- IGroupingQuery<T> GroupBy<K>(Expression<Func<T, K>> predicate);
- /// <summary>
- /// 内连接
- /// </summary>
- /// <typeparam name="TSource"></typeparam>
- /// <param name="q"></param>
- /// <param name="on"></param>
- /// <returns></returns>
- IJoiningQuery<T, TSource> InnerJoin<TSource>(IQuery<TSource> q, Expression<Func<T, TSource, bool>> on);
- /// <summary>
- /// 左关联
- /// </summary>
- /// <typeparam name="TSource"></typeparam>
- /// <param name="q"></param>
- /// <param name="on"></param>
- /// <returns></returns>
- IJoiningQuery<T, TSource> LeftJoin<TSource>(IQuery<TSource> q, Expression<Func<T, TSource, bool>> on);
- /// <summary>
- /// 右关联
- /// </summary>
- /// <typeparam name="TSource"></typeparam>
- /// <param name="q"></param>
- /// <param name="on"></param>
- /// <returns></returns>
- IJoiningQuery<T, TSource> RightJoin<TSource>(IQuery<TSource> q, Expression<Func<T, TSource, bool>> on);
- /// <summary>
- /// 全连接
- /// </summary>
- /// <typeparam name="TSource"></typeparam>
- /// <param name="q"></param>
- /// <param name="on"></param>
- /// <returns></returns>
- IJoiningQuery<T, TSource> FullJoin<TSource>(IQuery<TSource> q, Expression<Func<T, TSource, bool>> on);
- //2017-12-2季健国加
- IJoiningQuery<T, TOther> InnerJoin<TOther>(Expression<Func<T, TOther, bool>> on);
- IJoiningQuery<T, TOther> LeftJoin<TOther>(Expression<Func<T, TOther, bool>> on);
- IJoiningQuery<T, TOther> RightJoin<TOther>(Expression<Func<T, TOther, bool>> on);
- IJoiningQuery<T, TOther> FullJoin<TOther>(Expression<Func<T, TOther, bool>> on);
- /// <summary>
- /// 返回序列中的第一个元素
- /// </summary>
- /// <returns></returns>
- ResponseModel First();
- /// <summary>
- ///
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- ResponseModel First(RequestModel request);
- /// <summary>
- /// 返回序列中的第一个元素
- /// </summary>
- /// <param name="predicate"></param>
- /// <returns></returns>
- ResponseModel First(Expression<Func<T, bool>> predicate);
- /// <summary>
- ///获取一条数据
- /// </summary>
- /// <returns></returns>
- ResponseModel FirstOrDefault();
- /// <summary>
- ///
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- ResponseModel FirstOrDefault(RequestModel request);
- /// <summary>
- /// 获取一条数据
- /// </summary>
- /// <param name="predicate"></param>
- /// <param name="request"></param>
- /// <returns></returns>
- ResponseModel FirstOrDefault(Expression<Func<T, bool>> predicate, RequestModel request);
- /// <summary>
- /// 获取列表数据
- /// </summary>
- /// <returns></returns>
- ResponseModel ToList();
- /// <summary>
- ///
- /// </summary>
- /// <returns></returns>
- ResponseModel ToList(RequestModel request);
- /// <summary>
- /// 确定序列中是否有元素满足条件
- /// </summary>
- /// <returns></returns>
- ResponseModel Any();
- /// <summary>
- /// 确定序列中是否有元素满足条件
- /// </summary>
- /// <param name="predicate"></param>
- /// <returns></returns>
- ResponseModel Any(Expression<Func<T, bool>> predicate);
- /// <summary>
- /// 获取数据库记录
- /// </summary>
- /// <returns></returns>
- int Count();
- /// <summary>
- /// 获取数据库记录
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- ResponseModel Count(RequestModel request);
- ResponseModel LongCount();
- /// <summary>
- ///
- /// </summary>
- /// <typeparam name="TResult"></typeparam>
- /// <param name="selector"></param>
- /// <returns></returns>
- TResult Max<TResult>(Expression<Func<T, TResult>> selector);
- /// <summary>
- ///
- /// </summary>
- /// <typeparam name="TResult"></typeparam>
- /// <param name="selector"></param>
- /// <returns></returns>
- TResult Min<TResult>(Expression<Func<T, TResult>> selector);
- Tuple<int, ResponseModel> Sum(Expression<Func<T, int>> selector, RequestModel request = null);
- Tuple<int?, ResponseModel> Sum(Expression<Func<T, int?>> selector, RequestModel request = null);
- Tuple<long, ResponseModel> Sum(Expression<Func<T, long>> selector, RequestModel request = null);
- Tuple<long?, ResponseModel> Sum(Expression<Func<T, long?>> selector, RequestModel request = null);
- Tuple<decimal, ResponseModel> Sum(Expression<Func<T, decimal>> selector, RequestModel request = null);
- Tuple<decimal?, ResponseModel> Sum(Expression<Func<T, decimal?>> selector, RequestModel request = null);
- Tuple<double, ResponseModel> Sum(Expression<Func<T, double>> selector, RequestModel request = null);
- Tuple<double?, ResponseModel> Sum(Expression<Func<T, double?>> selector, RequestModel request = null);
- Tuple<float, ResponseModel> Sum(Expression<Func<T, float>> selector, RequestModel request = null);
- Tuple<float?, ResponseModel> Sum(Expression<Func<T, float?>> selector, RequestModel request = null);
- Tuple<int, ResponseModel> Average(Expression<Func<T, int>> selector, RequestModel request = null);
- Tuple<int?, ResponseModel> Average(Expression<Func<T, int?>> selector, RequestModel request = null);
- Tuple<long, ResponseModel> Average(Expression<Func<T, long>> selector, RequestModel request = null);
- Tuple<long?, ResponseModel> Average(Expression<Func<T, long?>> selector, RequestModel request = null);
- Tuple<decimal, ResponseModel> Average(Expression<Func<T, decimal>> selector, RequestModel request = null);
- Tuple<decimal?, ResponseModel> Average(Expression<Func<T, decimal?>> selector, RequestModel request = null);
- Tuple<double, ResponseModel> Average(Expression<Func<T, double>> selector, RequestModel request = null);
- Tuple<double?, ResponseModel> Average(Expression<Func<T, double?>> selector, RequestModel request = null);
- Tuple<float, ResponseModel> Average(Expression<Func<T, float>> selector, RequestModel request = null);
- Tuple<float?, ResponseModel> Average(Expression<Func<T, float?>> selector, RequestModel request = null);
- }
- }
|