95 lines
3.4 KiB
C#
95 lines
3.4 KiB
C#
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Text;
|
|||
|
|
|||
|
namespace SqlSugar
|
|||
|
{
|
|||
|
|
|||
|
public partial class QueryableProvider<T> : QueryableAccessory, ISugarQueryable<T>
|
|||
|
{
|
|||
|
public ISugarQueryable<T> AddJoinInfo(string tableName, string shortName, IFuncModel models, JoinType type = JoinType.Left)
|
|||
|
{
|
|||
|
var sqlobj = this.SqlBuilder.FuncModelToSql(models);
|
|||
|
this.QueryBuilder.Parameters.AddRange(sqlobj.Value);
|
|||
|
return this.AddJoinInfo(tableName, shortName, sqlobj.Key, type);
|
|||
|
}
|
|||
|
public ISugarQueryable<T> AddJoinInfo(List<JoinInfoParameter> joinInfoParameters)
|
|||
|
{
|
|||
|
if (joinInfoParameters != null)
|
|||
|
{
|
|||
|
foreach (var item in joinInfoParameters)
|
|||
|
{
|
|||
|
this.AddJoinInfo(item.TableName,item.ShortName,item.Models,item.Type);
|
|||
|
}
|
|||
|
}
|
|||
|
return this;
|
|||
|
}
|
|||
|
public ISugarQueryable<T> AS(string tableName, string shortName)
|
|||
|
{
|
|||
|
return this.AS($"{this.SqlBuilder.GetTranslationTableName(tableName)} {shortName}");
|
|||
|
}
|
|||
|
public ISugarQueryable<T> OrderBy(List<OrderByModel> models)
|
|||
|
{
|
|||
|
if (models == null || models.Count == 0)
|
|||
|
{
|
|||
|
return this;
|
|||
|
}
|
|||
|
var orderObj = this.SqlBuilder.OrderByModelToSql(models);
|
|||
|
this.OrderBy(orderObj.Key);
|
|||
|
this.QueryBuilder.Parameters.AddRange(orderObj.Value);
|
|||
|
return this;
|
|||
|
}
|
|||
|
public ISugarQueryable<T> GroupBy(List<GroupByModel> models)
|
|||
|
{
|
|||
|
if (models == null || models.Count == 0)
|
|||
|
{
|
|||
|
return this;
|
|||
|
}
|
|||
|
var orderObj = this.SqlBuilder.GroupByModelToSql(models);
|
|||
|
this.GroupBy(orderObj.Key);
|
|||
|
this.QueryBuilder.Parameters.AddRange(orderObj.Value);
|
|||
|
return this;
|
|||
|
}
|
|||
|
public ISugarQueryable<T> Select(List<SelectModel> models)
|
|||
|
{
|
|||
|
var orderObj = this.SqlBuilder.SelectModelToSql(models);
|
|||
|
this.Select(orderObj.Key);
|
|||
|
this.QueryBuilder.Parameters.AddRange(orderObj.Value);
|
|||
|
return this;
|
|||
|
}
|
|||
|
|
|||
|
public ISugarQueryable<TResult> Select<TResult>(List<SelectModel> models)
|
|||
|
{
|
|||
|
var orderObj = this.SqlBuilder.SelectModelToSql(models);
|
|||
|
var result=this.Select<TResult>(orderObj.Key);
|
|||
|
result.QueryBuilder.Parameters.AddRange(orderObj.Value);
|
|||
|
return result;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
public ISugarQueryable<T> Select(List<SelectModel> models, AsNameFormatType type)
|
|||
|
{
|
|||
|
if (type == AsNameFormatType.NoConvert)
|
|||
|
{
|
|||
|
foreach (var model in models)
|
|||
|
{
|
|||
|
if (!string.IsNullOrEmpty(model.AsName))
|
|||
|
{
|
|||
|
model.AsName = (UtilConstants.ReplaceKey + SqlBuilder.SqlTranslationLeft + model.AsName + SqlBuilder.SqlTranslationRight);
|
|||
|
model.AsName.ToCheckField();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
return Select(models);
|
|||
|
}
|
|||
|
public ISugarQueryable<T> Having(IFuncModel model)
|
|||
|
{
|
|||
|
var orderObj = this.SqlBuilder.FuncModelToSql(model);
|
|||
|
this.Having(orderObj.Key);
|
|||
|
this.QueryBuilder.Parameters.AddRange(orderObj.Value);
|
|||
|
return this;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|