The Join section can write the conditions

This commit is contained in:
sunkaixuan
2017-06-19 12:16:51 +08:00
parent f0a5e4dc2b
commit a2a4bbd349
2 changed files with 14 additions and 2 deletions

View File

@@ -229,6 +229,13 @@ namespace OrmTest.Demo
.OrderBy((st, sc) => sc.Id, OrderByType.Desc) .OrderBy((st, sc) => sc.Id, OrderByType.Desc)
.Select((st, sc) => new ViewModelStudent { Name = st.Name, SchoolId = sc.Id }).ToList(); .Select((st, sc) => new ViewModelStudent { Name = st.Name, SchoolId = sc.Id }).ToList();
//join 2
var list4_1 = db.Queryable<Student, School>((st, sc) => new object[] {
JoinType.Left,st.SchoolId==sc.Id&& st.Name == "jack"
}).ToList();
//The simple use of Join 2 table //The simple use of Join 2 table
var list5 = db.Queryable<Student, School>((st, sc) => st.SchoolId == sc.Id).Select((st,sc)=>new {st.Name,st.Id,schoolName=sc.Name}).ToList(); var list5 = db.Queryable<Student, School>((st, sc) => st.SchoolId == sc.Id).Select((st,sc)=>new {st.Name,st.Id,schoolName=sc.Name}).ToList();

View File

@@ -181,8 +181,12 @@ namespace SqlSugar
{ {
this.CreateQueryable<T>(queryable); this.CreateQueryable<T>(queryable);
string shortName = string.Empty; string shortName = string.Empty;
queryable.SqlBuilder.QueryBuilder.JoinQueryInfos = this.GetJoinInfos(joinExpression, ref shortName, types); List<SugarParameter> paramters =new List<SugarParameter>();
queryable.SqlBuilder.QueryBuilder.JoinQueryInfos = this.GetJoinInfos(joinExpression,ref paramters, ref shortName, types);
queryable.SqlBuilder.QueryBuilder.TableShortName = shortName; queryable.SqlBuilder.QueryBuilder.TableShortName = shortName;
if (paramters != null) {
queryable.SqlBuilder.QueryBuilder.Parameters.AddRange(paramters);
}
} }
protected void CreateEasyQueryJoin<T>(Expression joinExpression, Type[] types, ISugarQueryable<T> queryable) where T : class, new() protected void CreateEasyQueryJoin<T>(Expression joinExpression, Type[] types, ISugarQueryable<T> queryable) where T : class, new()
{ {
@@ -194,7 +198,7 @@ namespace SqlSugar
#endregion #endregion
#region Private methods #region Private methods
protected List<JoinQueryInfo> GetJoinInfos(Expression joinExpression, ref string shortName, params Type[] entityTypeArray) protected List<JoinQueryInfo> GetJoinInfos(Expression joinExpression,ref List<SugarParameter> parameters, ref string shortName, params Type[] entityTypeArray)
{ {
List<JoinQueryInfo> result = new List<JoinQueryInfo>(); List<JoinQueryInfo> result = new List<JoinQueryInfo>();
var lambdaParameters = ((LambdaExpression)joinExpression).Parameters.ToList(); var lambdaParameters = ((LambdaExpression)joinExpression).Parameters.ToList();
@@ -204,6 +208,7 @@ namespace SqlSugar
expressionContext.Resolve(joinExpression, ResolveExpressType.Join); expressionContext.Resolve(joinExpression, ResolveExpressType.Join);
int i = 0; int i = 0;
var joinArray = expressionContext.Result.GetResultArray(); var joinArray = expressionContext.Result.GetResultArray();
parameters = expressionContext.Parameters;
foreach (var entityType in entityTypeArray) foreach (var entityType in entityTypeArray)
{ {
var isFirst = i == 0; ++i; var isFirst = i == 0; ++i;