diff --git a/Src/Asp.Net/SqlServerTest/Demos/1_Query.cs b/Src/Asp.Net/SqlServerTest/Demos/1_Query.cs index b5052d2d6..175db0cab 100644 --- a/Src/Asp.Net/SqlServerTest/Demos/1_Query.cs +++ b/Src/Asp.Net/SqlServerTest/Demos/1_Query.cs @@ -36,6 +36,8 @@ namespace OrmTest.Demo var getAll7 = db.Queryable().Where(it => SqlFunc.Subqueryable().Where(s => s.Id == it.Id).Any()).ToList(); + var getAll9 = db.Queryable().Where(it => SqlFunc.Subqueryable().Where(s => s.Id == it.Id).Count()==1).ToList(); + var getAll8= db.Queryable().Where(it => SqlFunc.Subqueryable().Where(s => s.Id == it.Id).Where(s=>s.Name==it.Name).NotAny()).ToList(); var getAll1 = db.Queryable().Where(it => it.Id == SqlFunc.Subqueryable().Where(s => s.Id == it.Id).Select(s => s.Id)).ToList(); diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Items/ISubAction.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Items/ISubOperation.cs similarity index 99% rename from Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Items/ISubAction.cs rename to Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Items/ISubOperation.cs index 3a7af1bab..b0848a862 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Items/ISubAction.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Items/ISubOperation.cs @@ -13,6 +13,5 @@ namespace SqlSugar string GetValue(Expression expression); int Sort { get; } Expression Expression { get; set; } - } } diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Items/SubCount.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Items/SubCount.cs new file mode 100644 index 000000000..199c0f744 --- /dev/null +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Items/SubCount.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; +using System.Text; + +namespace SqlSugar +{ + public class SubCount: ISubOperation + { + public string Name + { + get + { + return "Count"; + } + } + + public Expression Expression + { + get; set; + } + + + public int Sort + { + get + { + return 200; + } + } + + public ExpressionContext Context + { + get; set; + } + + public string GetValue(Expression expression) + { + return "COUNT(*)"; + } + } +} diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/SubResolve.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/SubResolve.cs index ec0ace212..acb5c29ac 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/SubResolve.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/SubResolve.cs @@ -22,7 +22,7 @@ namespace SqlSugar this.context = context; var currentExpression = expression; allMethods.Add(currentExpression); - if (context.IsSingle && oppsiteExpression != null) + if (context.IsSingle && oppsiteExpression != null&& oppsiteExpression is MemberExpression) { var childExpression = (oppsiteExpression as MemberExpression).Expression; this.context.SingleTableNameSubqueryShortName = (childExpression as ParameterExpression).Name; diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/SubTools.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/SubTools.cs index 9dac17bae..21af04649 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/SubTools.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/SubTools.cs @@ -19,7 +19,8 @@ namespace SqlSugar new SubAny(){ Context=Context }, new SubNotAny(){ Context=Context }, new SubBegin(){ Context=Context }, - new SubFromTable(){ Context=Context } + new SubFromTable(){ Context=Context }, + new SubCount(){ Context=Context } }; } diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Subquerable.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Subquerable.cs index 1ee720751..2d381278c 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Subquerable.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Subquerable.cs @@ -36,9 +36,9 @@ namespace SqlSugar return default(bool); } - public bool Count() + public int Count() { - return default(bool); + return default(int); } } } diff --git a/Src/Asp.Net/SqlSugar/SqlSugar.csproj b/Src/Asp.Net/SqlSugar/SqlSugar.csproj index 8afe05208..ff07be160 100644 --- a/Src/Asp.Net/SqlSugar/SqlSugar.csproj +++ b/Src/Asp.Net/SqlSugar/SqlSugar.csproj @@ -72,8 +72,9 @@ - + +