【发布时间】:2016-12-12 10:36:32
【问题描述】:
使用代码优先,Oracle 数据库 如果有大量数据,我需要选择前 100 个记录, 但是我还需要有可能获得其余记录,那么如何从101开始获取接下来的100个记录?
是否有可能使用 Linq Take()?
List<int> myList = new List<int>();
List<int> newList = new List<int>();
myList = DBContext.MyTable.Where(x=>x.ID == someParam).Select(x=>x.ID).toList();
int recodCount = myList.Count();
if (recodCount > 1000)
{
newList.AddRange(myList.Take(100));
}
else
{
newList.AddRange(myList);
}
【问题讨论】:
-
看看 Skip()
-
database.Skip(100).Take(100); -
使用
ToList作为最后的语句,否则你将全部选择到内存中 -
@TimSchmelter 你上面的评论是不正确的......它们还不会被具体化,sudo sql 将被生成但不会被执行......如果你想在调试器中看到你的值需要“ToList”,它们都将加载到内存中
-
@Seabizkit。 OP 两次致电
ToList。好吧,在Where之后第一次已经过滤了。但无论如何,他不需要两个列表。
标签: c# entity-framework linq code-first