【问题标题】:how can I return a certain amount of items from my db using linq statements in c#如何使用 c# 中的 linq 语句从我的数据库中返回一定数量的项目
【发布时间】:2013-05-06 15:52:07
【问题描述】:

我在 C# 代码中调用了我的数据库,如下所示:

var filter = new PrioritizeSessionFilter()
            .Add(DbTable.PrioritizeSession.Columns.IsArchived, Comp.Equals, false);

var list = UnitOfWork.PrioritizeSessions.Query(filter);

有没有办法一次只能退回 10 件物品,而不是一次退回所有物品?有没有我可以创建的过滤器来做到这一点?

【问题讨论】:

  • 为什么不把你的结果集从那里一次抓取 10 个?
  • @Limey 如果结果集包含数百万行,这可能会出现问题。 :)
  • @I4V 这对于可枚举序列非常有用,但不适用于IQueryable;它强制将整个查询带入内存,然后才能进行批处理。
  • 杰里米是正确的。我问的原因是因为我有这么多物品,这会减慢一切

标签: c# linq unit-of-work


【解决方案1】:

你可以使用Take扩展方法:

// get 10 elements
var myList = UnitOfWork.PrioritizeSessions.Query(filter).Take(10);

【讨论】:

  • 谢谢@GrantWinney 我应该在我的回答中提到它。所以这里有一个小例子:Query().Skip(10).Take(10)
【解决方案2】:

虽然 walkhard 是正确的,但在使用 take 时通常应该使用 skip,这样如果您需要不同的十个项目,您也可以返回这些项目

 var amyList = UnitOfWork.PrioritizeSessions.Query(filter).Skip(skip).Take(10).ToList();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-23
    • 1970-01-01
    相关资源
    最近更新 更多