gpt4 book ai didi

c# - IQueryable 扩展方法批量取数据

转载 作者:太空狗 更新时间:2023-10-29 20:59:29 28 4
gpt4 key购买 nike

有没有人发现/编码过批量查询数据(使用linq to sql)的扩展方法?我看过 IEnumerable 扩展,但我正在寻找可以像这样使用的东西:

IQueryable<Order> orders = from i in db.Orders select i;
foreach(var batch in orders.InBatches(100))
{
//batch of 100 products
foreach(var order in batch)
{
//do something
}
}

最佳答案

你可以做的是:

public static IEnumerable<IQueryable<T>> InBatches(
this IQueryable<T> collection, int size)
{
int totalSize = collection.Count();

for (int start = 0; start < totalSize; start += size)
{
yield return collection.Skip(start).Take(size);
}
}

此扩展方法允许您对返回的 IQueryables 执行额外的筛选。但是,用处非常有限。我想不出任何好的方案:-)。在大多数情况下,您只想流式传输结果并返回 IEnumerable<IEnumerable<T>>会做得很好,甚至更好,因为这将导致单个 SQL 查询,而所示方法将导致 N + 1 个查询。

关于c# - IQueryable<T> 扩展方法批量取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8065153/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com