mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 02:32:50 +08:00
- 增加 WithMemory 基于内存查询;
This commit is contained in:
parent
991ea968fc
commit
56d744559e
@ -345,6 +345,25 @@ namespace base_entity
|
|||||||
BaseEntity.Initialization(fsql, () => _asyncUow.Value);
|
BaseEntity.Initialization(fsql, () => _asyncUow.Value);
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
var list = new List<User1>();
|
||||||
|
list.Add(new User1 { Id = Guid.NewGuid() });
|
||||||
|
list.Add(new User1 { Id = Guid.NewGuid() });
|
||||||
|
list.Add(new User1 { Id = Guid.NewGuid() });
|
||||||
|
|
||||||
|
var listSql = fsql.Select<User1>()
|
||||||
|
.WithMemory(list)
|
||||||
|
.ToSql();
|
||||||
|
|
||||||
|
var listSql2 = fsql.Select<UserGroup>()
|
||||||
|
.FromQuery(fsql.Select<User1>().WithMemory(list))
|
||||||
|
.InnerJoin((a, b) => a.Id == b.GroupId)
|
||||||
|
.ToSql();
|
||||||
|
|
||||||
|
var listSql2Result = fsql.Select<UserGroup>()
|
||||||
|
.FromQuery(fsql.Select<User1>().WithMemory(list))
|
||||||
|
.InnerJoin((a, b) => a.Id == b.GroupId)
|
||||||
|
.ToList();
|
||||||
|
|
||||||
var anysql01 = fsql.Select<Permission>().Where(a => a.Roles.Any(b => b.Users.Any(c => c.UserName == "admin"))).ToSql();
|
var anysql01 = fsql.Select<Permission>().Where(a => a.Roles.Any(b => b.Users.Any(c => c.UserName == "admin"))).ToSql();
|
||||||
|
|
||||||
var atimpl = fsql.CodeFirst.GetTableByEntity(typeof(AsTableLog))
|
var atimpl = fsql.CodeFirst.GetTableByEntity(typeof(AsTableLog))
|
||||||
|
@ -2627,6 +2627,13 @@
|
|||||||
<param name="parms">参数</param>
|
<param name="parms">参数</param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:FreeSql.ISelect`1.WithMemory(System.Collections.Generic.IEnumerable{`0})">
|
||||||
|
<summary>
|
||||||
|
实现 select .. from ( select .. UNION ALL select .. ) a 这样的功能(基于内存数据)
|
||||||
|
</summary>
|
||||||
|
<param name="source">内存数据</param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:FreeSql.ISelect`1.WithTempQuery``1(System.Linq.Expressions.Expression{System.Func{`0,``0}})">
|
<member name="M:FreeSql.ISelect`1.WithTempQuery``1(System.Linq.Expressions.Expression{System.Func{`0,``0}})">
|
||||||
<summary>
|
<summary>
|
||||||
嵌套查询 select * from ( select ... from table ... ) a
|
嵌套查询 select * from ( select ... from table ... ) a
|
||||||
|
@ -369,6 +369,12 @@ namespace FreeSql
|
|||||||
/// <param name="parms">参数</param>
|
/// <param name="parms">参数</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
ISelect<T1> WithSql(string sql, object parms = null);
|
ISelect<T1> WithSql(string sql, object parms = null);
|
||||||
|
/// <summary>
|
||||||
|
/// 实现 select .. from ( select .. UNION ALL select .. ) a 这样的功能(基于内存数据)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="source">内存数据</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
ISelect<T1> WithMemory(IEnumerable<T1> source);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 嵌套查询 select * from ( select ... from table ... ) a
|
/// 嵌套查询 select * from ( select ... from table ... ) a
|
||||||
|
@ -437,6 +437,15 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
if (parms != null) _params.AddRange(_commonUtils.GetDbParamtersByObject(sql, parms));
|
if (parms != null) _params.AddRange(_commonUtils.GetDbParamtersByObject(sql, parms));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
public ISelect<T1> WithMemory(IEnumerable<T1> source)
|
||||||
|
{
|
||||||
|
var sb = new StringBuilder();
|
||||||
|
(_orm.InsertOrUpdate<object>().AsType(_tables[0].Table.Type) as InsertOrUpdateProvider<object>)
|
||||||
|
.WriteSourceSelectUnionAll(source.Select(a => (object)a).ToList(), sb, _params);
|
||||||
|
|
||||||
|
try { return WithSql(sb.ToString()); }
|
||||||
|
finally { sb.Clear(); }
|
||||||
|
}
|
||||||
|
|
||||||
public ISelect<TDto> WithTempQuery<TDto>(Expression<Func<T1, TDto>> selector) => InternalWithTempQuery<TDto>(selector);
|
public ISelect<TDto> WithTempQuery<TDto>(Expression<Func<T1, TDto>> selector) => InternalWithTempQuery<TDto>(selector);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user