using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;

namespace Ant.ORM
{
    public interface ISqlItemQuery<T>
    {
        /// <summary>
        /// 显示列
        /// </summary>
        /// <typeparam name="TResult"></typeparam>
        /// <param name="selector"></param>
        /// <returns></returns>
        ISqlItemQuery<TResult> Select<TResult>(Expression<Func<T, TResult>> selector);

        /// <summary>
        /// 返回序列中的第一个元素
        /// </summary>
        /// <returns></returns>
        ResponseModel First();
        /// <summary>
        /// 
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        ResponseModel First(RequestModel request);
        /// <summary>
        ///获取一条数据
        /// </summary>
        /// <returns></returns>
        ResponseModel FirstOrDefault();

        /// <summary>
        /// 
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        ResponseModel FirstOrDefault(RequestModel request);

        /// <summary>
        /// 获取列表数据
        /// </summary>
        /// <returns></returns>
        ResponseModel ToList();
        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        ResponseModel ToList(RequestModel request);
    }
}