使用Code First,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);
}
答案 0 :(得分:2)
我想你需要分页,你需要定义pageIndex和pageSize
myList = DBContext.MyTable
.Where(x=>x.ID == someParam)
.Skip((pageIndex - 1) * pageSize)
.Take(pageSize);
但如果您只想跳过100,那么您遗失的是Skip
:Enumerable.Skip Method。
就像Tim说的那样,在请求中不要调用ToList(),这将选择内存中的所有内容。也请勿致电Count()
查看if(count > 100)
。你应该这样做:if(myList.Skip(number).Any())
如果你的集合有更多的记录而不是数字,这将是真的。