mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-04-24 18:04:52 +08:00
Add Queryable.Foreach
This commit is contained in:
parent
1df9b04fa8
commit
4f61d7e03b
@ -185,6 +185,13 @@ namespace OrmTest
|
||||
var test30= db.Queryable<Order>().Select(it => new { x = SqlFunc.LessThanOrEqual(1, 2) }).ToList();
|
||||
var test31 = db.Queryable<Order>().Select(it => new { x = SqlFunc.GreaterThan(1, 2) }).ToList();
|
||||
var test32 = db.Queryable<Order>().Select(it => new { x = SqlFunc.GreaterThanOrEqual(1, 2) }).ToList();
|
||||
List<Order> result = new List<Order>();
|
||||
db.Queryable<Order>().ForEach(it =>
|
||||
{
|
||||
result.Add(it);
|
||||
|
||||
},10);
|
||||
var test33= db.Queryable<Order>().ToList();
|
||||
Console.WriteLine("#### Examples End ####");
|
||||
}
|
||||
|
||||
|
@ -1276,6 +1276,23 @@ namespace SqlSugar
|
||||
InitMapping();
|
||||
return _ToList<T>();
|
||||
}
|
||||
public virtual void ForEach(Action<T> action, int singleMaxReads = 300,System.Threading.CancellationTokenSource cancellationTokenSource = null)
|
||||
{
|
||||
Check.Exception(this.QueryBuilder.Skip > 0 || this.QueryBuilder.Take > 0, ErrorMessage.GetThrowMessage("no support Skip take, use PageForEach", "不支持Skip Take,请使用 Queryale.PageForEach"));
|
||||
var totalNumber = 0;
|
||||
var totalPage = 1;
|
||||
for (int i = 1; i <= totalPage; i++)
|
||||
{
|
||||
if (cancellationTokenSource?.IsCancellationRequested == true) return;
|
||||
var queryable = this.Clone();
|
||||
var page = queryable.ToPageList(i, singleMaxReads, ref totalNumber, ref totalPage);
|
||||
foreach (var item in page)
|
||||
{
|
||||
if (cancellationTokenSource?.IsCancellationRequested == true) return;
|
||||
action.Invoke(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
public List<T> ToOffsetPage(int pageIndex, int pageSize)
|
||||
{
|
||||
if (this.Context.CurrentConnectionConfig.DbType != DbType.SqlServer)
|
||||
|
@ -108,6 +108,7 @@ namespace SqlSugar
|
||||
ISugarQueryable<TResult> Select<TResult>(string select);
|
||||
ISugarQueryable<T> Select(string select);
|
||||
ISugarQueryable<T> MergeTable();
|
||||
void ForEach(Action<T> action, int singleMaxReads = 300, System.Threading.CancellationTokenSource cancellationTokenSource = null);
|
||||
|
||||
int Count();
|
||||
Task<int> CountAsync();
|
||||
|
Loading…
Reference in New Issue
Block a user