mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 10:42:52 +08:00
- 增加 WithMemory 基于内存查询;
This commit is contained in:
parent
991ea968fc
commit
56d744559e
@ -345,6 +345,25 @@ namespace base_entity
|
||||
BaseEntity.Initialization(fsql, () => _asyncUow.Value);
|
||||
#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 atimpl = fsql.CodeFirst.GetTableByEntity(typeof(AsTableLog))
|
||||
|
@ -2627,6 +2627,13 @@
|
||||
<param name="parms">参数</param>
|
||||
<returns></returns>
|
||||
</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}})">
|
||||
<summary>
|
||||
嵌套查询 select * from ( select ... from table ... ) a
|
||||
|
@ -369,6 +369,12 @@ namespace FreeSql
|
||||
/// <param name="parms">参数</param>
|
||||
/// <returns></returns>
|
||||
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>
|
||||
/// 嵌套查询 select * from ( select ... from table ... ) a
|
||||
|
@ -437,6 +437,15 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (parms != null) _params.AddRange(_commonUtils.GetDbParamtersByObject(sql, parms));
|
||||
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);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user