- 增加 ISelect`1.WithSql("select * from user ...") 功能;

This commit is contained in:
28810 2019-12-31 16:26:04 +08:00
parent 113a8276b3
commit 255593a594
4 changed files with 33 additions and 0 deletions

View File

@ -110,6 +110,13 @@
清空状态数据 清空状态数据
</summary> </summary>
</member> </member>
<member name="M:FreeSql.DbSet`1.RemoveAsync(System.Linq.Expressions.Expression{System.Func{`0,System.Boolean}})">
<summary>
根据 lambda 条件删除数据
</summary>
<param name="predicate"></param>
<returns></returns>
</member>
<member name="M:FreeSql.DbSet`1.Add(`0)"> <member name="M:FreeSql.DbSet`1.Add(`0)">
<summary> <summary>
添加 添加

View File

@ -1707,6 +1707,14 @@
<param name="then">即能 ThenInclude还可以二次过滤这个 EFCore 做不到?)</param> <param name="then">即能 ThenInclude还可以二次过滤这个 EFCore 做不到?)</param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:FreeSql.ISelect`1.WithSql(System.String)">
<summary>
实现 select .. from ( select ... from t ) a 这样的功能<para></para>
使用 AsTable 方法也可以达到效果
</summary>
<param name="sql">SQL语句</param>
<returns></returns>
</member>
<member name="M:FreeSql.ISelectFromExpression`1.Where(System.Linq.Expressions.Expression{System.Func{`0,System.Boolean}})"> <member name="M:FreeSql.ISelectFromExpression`1.Where(System.Linq.Expressions.Expression{System.Func{`0,System.Boolean}})">
<summary> <summary>
查询条件Where(a => a.Id > 10)支持导航对象查询Where(a => a.Author.Email == "2881099@qq.com") 查询条件Where(a => a.Id > 10)支持导航对象查询Where(a => a.Author.Email == "2881099@qq.com")

View File

@ -369,5 +369,13 @@ namespace FreeSql
/// <param name="then">即能 ThenInclude还可以二次过滤这个 EFCore 做不到?)</param> /// <param name="then">即能 ThenInclude还可以二次过滤这个 EFCore 做不到?)</param>
/// <returns></returns> /// <returns></returns>
ISelect<T1> IncludeMany<TNavigate>(Expression<Func<T1, IEnumerable<TNavigate>>> navigateSelector, Action<ISelect<TNavigate>> then = null) where TNavigate : class; ISelect<T1> IncludeMany<TNavigate>(Expression<Func<T1, IEnumerable<TNavigate>>> navigateSelector, Action<ISelect<TNavigate>> then = null) where TNavigate : class;
/// <summary>
/// 实现 select .. from ( select ... from t ) a 这样的功能<para></para>
/// 使用 AsTable 方法也可以达到效果
/// </summary>
/// <param name="sql">SQL语句</param>
/// <returns></returns>
ISelect<T1> WithSql(string sql);
} }
} }

View File

@ -329,6 +329,16 @@ namespace FreeSql.Internal.CommonProvider
return this; return this;
} }
public ISelect<T1> WithSql(string sql)
{
this.AsTable((type, old) =>
{
if (type == _tables.First().Table?.Type) return $"( {sql} )";
return old;
});
return this;
}
public bool Any(Expression<Func<T1, bool>> exp) => this.Where(exp).Any(); public bool Any(Expression<Func<T1, bool>> exp) => this.Where(exp).Any();
public TReturn ToOne<TReturn>(Expression<Func<T1, TReturn>> select) => this.Limit(1).ToList(select).FirstOrDefault(); public TReturn ToOne<TReturn>(Expression<Func<T1, TReturn>> select) => this.Limit(1).ToList(select).FirstOrDefault();