Update db.QueryableByObject

This commit is contained in:
sunkaixuan
2023-06-11 12:34:38 +08:00
parent 1719536b78
commit 9d873846bc
2 changed files with 31 additions and 4 deletions

View File

@@ -3,21 +3,39 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace SqlSugar namespace SqlSugar
{ {
public class QueryMethodInfo public class QueryMethodInfo
{ {
public object QueryableObj { get; internal set; } public object QueryableObj { get; internal set; }
public SqlSugarProvider Context { get; internal set; } public SqlSugarProvider Context { get; internal set; }
public Type EntityType { get; set; }
public QueryMethodInfo Where(string sql, object parameters) public QueryMethodInfo OrderBy(string orderBySql)
{
var method = QueryableObj.GetType().GetMyMethod("OrderBy", 1, typeof(string));
this.QueryableObj = method.Invoke(QueryableObj, new object[] { orderBySql });
return this;
}
public QueryMethodInfo GroupBy(string groupBySql)
{
var method = QueryableObj.GetType().GetMyMethod("GroupBy", 1, typeof(string));
this.QueryableObj = method.Invoke(QueryableObj, new object[] { groupBySql });
return this;
}
public QueryMethodInfo Where(string sql, object parameters=null)
{ {
var method = QueryableObj.GetType().GetMyMethod("Where", 2, typeof(string), typeof(object)); var method = QueryableObj.GetType().GetMyMethod("Where", 2, typeof(string), typeof(object));
this.QueryableObj= method.Invoke(QueryableObj, new object[] { sql, parameters }); this.QueryableObj= method.Invoke(QueryableObj, new object[] { sql, parameters });
return this; return this;
} }
public QueryMethodInfo Having(string sql, object parameters = null)
{
var method = QueryableObj.GetType().GetMyMethod("Having", 2, typeof(string), typeof(object));
this.QueryableObj = method.Invoke(QueryableObj, new object[] { sql, parameters });
return this;
}
public QueryMethodInfo SplitTable(Func<List<SplitTableInfo>, IEnumerable<SplitTableInfo>> getTableNamesFunc) public QueryMethodInfo SplitTable(Func<List<SplitTableInfo>, IEnumerable<SplitTableInfo>> getTableNamesFunc)
{ {
var method = QueryableObj.GetType().GetMyMethod("SplitTable", 1, typeof(Func<List<SplitTableInfo>, IEnumerable<SplitTableInfo>>)); var method = QueryableObj.GetType().GetMyMethod("SplitTable", 1, typeof(Func<List<SplitTableInfo>, IEnumerable<SplitTableInfo>>));
@@ -37,6 +55,14 @@ namespace SqlSugar
return this; return this;
} }
public QueryMethodInfo Select(string selectorSql)
{
var method = QueryableObj.GetType().GetMyMethod("Select", 1, typeof(string))
.MakeGenericMethod(EntityType);
this.QueryableObj = method.Invoke(QueryableObj, new object[] { selectorSql });
return this;
}
public QueryMethodInfo Select(string selectorSql, Type selectType) public QueryMethodInfo Select(string selectorSql, Type selectType)
{ {
var method = QueryableObj.GetType().GetMyMethod("Select", 1, typeof(string)) var method = QueryableObj.GetType().GetMyMethod("Select", 1, typeof(string))

View File

@@ -90,6 +90,7 @@ namespace SqlSugar
var queryableObj=methodT.Invoke(this,new object[] {}); var queryableObj=methodT.Invoke(this,new object[] {});
result.QueryableObj = queryableObj; result.QueryableObj = queryableObj;
result.Context = this.Context; result.Context = this.Context;
result.EntityType = entityType;
return result; return result;
} }
/// <summary> /// <summary>