From d31bb4660b84e5c697f86f4b93f4632f67391667 Mon Sep 17 00:00:00 2001 From: "610262374@qq.com" <610262374@qq.com> Date: Sat, 24 Nov 2018 16:23:14 +0800 Subject: [PATCH] Add Queryable.In overload --- .../QueryableProvider/QueryableProvider.cs | 161 +++++++++++++++++- Src/Asp.Net/SqlSugar/Interface/IQueryable.cs | 24 +++ 2 files changed, 184 insertions(+), 1 deletion(-) diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index 2025d70b5..d526d450f 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -254,6 +254,7 @@ namespace SqlSugar } public virtual ISugarQueryable In(Expression> expression, params FieldType[] inValues) { + QueryBuilder.CheckExpression(expression, "In"); var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); @@ -1214,8 +1215,9 @@ namespace SqlSugar return result; } - protected void _InQueryable(Expression> expression, KeyValuePair> sqlObj) + protected void _InQueryable(Expression expression, KeyValuePair> sqlObj) { + QueryBuilder.CheckExpression(expression, "In"); string sql = sqlObj.Key; if (sqlObj.Value.HasValue()) { @@ -1460,6 +1462,7 @@ namespace SqlSugar #region In public new ISugarQueryable In(Expression> expression, params FieldType[] inValues) { + QueryBuilder.CheckExpression(expression, "In"); var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); @@ -1468,6 +1471,7 @@ namespace SqlSugar } public new ISugarQueryable In(Expression> expression, List inValues) { + QueryBuilder.CheckExpression(expression, "In"); var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); @@ -1480,6 +1484,31 @@ namespace SqlSugar _InQueryable(expression, sqlObj); return this; } + + public ISugarQueryable In(Expression> expression, params FieldType[] inValues) + { + QueryBuilder.CheckExpression(expression, "In"); + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var fieldName = lamResult.GetResultString(); + In(fieldName, inValues); + return this; + } + public ISugarQueryable In(Expression> expression, List inValues) + { + QueryBuilder.CheckExpression(expression, "In"); + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var fieldName = lamResult.GetResultString(); + In(fieldName, inValues); + return this; + } + public ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) + { + var sqlObj = childQueryExpression.ToSql(); + _InQueryable(expression, sqlObj); + return this; + } #endregion #region Other @@ -1743,6 +1772,7 @@ namespace SqlSugar #region In public new ISugarQueryable In(Expression> expression, params FieldType[] inValues) { + QueryBuilder.CheckExpression(expression, "In"); var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); @@ -1751,6 +1781,7 @@ namespace SqlSugar } public new ISugarQueryable In(Expression> expression, List inValues) { + QueryBuilder.CheckExpression(expression, "In"); var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); @@ -1763,6 +1794,56 @@ namespace SqlSugar _InQueryable(expression, sqlObj); return this; } + + public ISugarQueryable In(Expression> expression, params FieldType[] inValues) + { + QueryBuilder.CheckExpression(expression, "In"); + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var fieldName = lamResult.GetResultString(); + In(fieldName, inValues); + return this; + } + public ISugarQueryable In(Expression> expression, List inValues) + { + QueryBuilder.CheckExpression(expression, "In"); + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var fieldName = lamResult.GetResultString(); + In(fieldName, inValues); + return this; + } + public ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) + { + var sqlObj = childQueryExpression.ToSql(); + _InQueryable(expression, sqlObj); + return this; + } + + public ISugarQueryable In(Expression> expression, params FieldType[] inValues) + { + QueryBuilder.CheckExpression(expression, "In"); + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var fieldName = lamResult.GetResultString(); + In(fieldName, inValues); + return this; + } + public ISugarQueryable In(Expression> expression, List inValues) + { + QueryBuilder.CheckExpression(expression, "In"); + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var fieldName = lamResult.GetResultString(); + In(fieldName, inValues); + return this; + } + public ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) + { + var sqlObj = childQueryExpression.ToSql(); + _InQueryable(expression, sqlObj); + return this; + } #endregion #region Other @@ -2058,6 +2139,7 @@ namespace SqlSugar #region In public new ISugarQueryable In(Expression> expression, params FieldType[] inValues) { + QueryBuilder.CheckExpression(expression, "In"); var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); @@ -2066,6 +2148,7 @@ namespace SqlSugar } public new ISugarQueryable In(Expression> expression, List inValues) { + QueryBuilder.CheckExpression(expression, "In"); var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); @@ -2078,8 +2161,84 @@ namespace SqlSugar _InQueryable(expression, sqlObj); return this; } + + public ISugarQueryable In(Expression> expression, params FieldType[] inValues) + { + QueryBuilder.CheckExpression(expression, "In"); + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var fieldName = lamResult.GetResultString(); + In(fieldName, inValues); + return this; + } + public ISugarQueryable In(Expression> expression, List inValues) + { + QueryBuilder.CheckExpression(expression, "In"); + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var fieldName = lamResult.GetResultString(); + In(fieldName, inValues); + return this; + } + public ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) + { + var sqlObj = childQueryExpression.ToSql(); + _InQueryable(expression, sqlObj); + return this; + } + + public ISugarQueryable In(Expression> expression, params FieldType[] inValues) + { + QueryBuilder.CheckExpression(expression, "In"); + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var fieldName = lamResult.GetResultString(); + In(fieldName, inValues); + return this; + } + public ISugarQueryable In(Expression> expression, List inValues) + { + QueryBuilder.CheckExpression(expression, "In"); + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var fieldName = lamResult.GetResultString(); + In(fieldName, inValues); + return this; + } + public ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) + { + var sqlObj = childQueryExpression.ToSql(); + _InQueryable(expression, sqlObj); + return this; + } + + public ISugarQueryable In(Expression> expression, params FieldType[] inValues) + { + QueryBuilder.CheckExpression(expression, "In"); + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var fieldName = lamResult.GetResultString(); + In(fieldName, inValues); + return this; + } + public ISugarQueryable In(Expression> expression, List inValues) + { + QueryBuilder.CheckExpression(expression, "In"); + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var fieldName = lamResult.GetResultString(); + In(fieldName, inValues); + return this; + } + public ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) + { + var sqlObj = childQueryExpression.ToSql(); + _InQueryable(expression, sqlObj); + return this; + } #endregion + #region Other public new ISugarQueryable Clone() { diff --git a/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs b/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs index 947ec2c91..5481607f0 100644 --- a/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs +++ b/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs @@ -176,6 +176,10 @@ namespace SqlSugar new ISugarQueryable In(Expression> expression, params FieldType[] inValues); new ISugarQueryable In(Expression> expression, List inValues); new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression); + + ISugarQueryable In(Expression> expression, params FieldType[] inValues); + ISugarQueryable In(Expression> expression, List inValues); + ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression); #endregion #region Other @@ -244,6 +248,14 @@ namespace SqlSugar new ISugarQueryable In(Expression> expression, params FieldType[] inValues); new ISugarQueryable In(Expression> expression, List inValues); new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression); + + ISugarQueryable In(Expression> expression, params FieldType[] inValues); + ISugarQueryable In(Expression> expression, List inValues); + ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression); + + ISugarQueryable In(Expression> expression, params FieldType[] inValues); + ISugarQueryable In(Expression> expression, List inValues); + ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression); #endregion #region Other @@ -319,6 +331,18 @@ namespace SqlSugar new ISugarQueryable In(Expression> expression, params FieldType[] inValues); new ISugarQueryable In(Expression> expression, List inValues); new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression); + + ISugarQueryable In(Expression> expression, params FieldType[] inValues); + ISugarQueryable In(Expression> expression, List inValues); + ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression); + + ISugarQueryable In(Expression> expression, params FieldType[] inValues); + ISugarQueryable In(Expression> expression, List inValues); + ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression); + + ISugarQueryable In(Expression> expression, params FieldType[] inValues); + ISugarQueryable In(Expression> expression, List inValues); + ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression); #endregion #region Other