是否有可能使用LinQ和Take()从数据库表中获取100条记录然后其他100条记录

时间:2016-12-12 10:36:32

标签: c# entity-framework linq code-first

使用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);
}

1 个答案:

答案 0 :(得分:2)

我想你需要分页,你需要定义pageIndex和pageSize

myList = DBContext.MyTable
                  .Where(x=>x.ID == someParam)
                  .Skip((pageIndex - 1) * pageSize)
                  .Take(pageSize);

但如果您只想跳过100,那么您遗失的是SkipEnumerable.Skip Method

就像Tim说的那样,在请求中不要调用ToList(),这将选择内存中的所有内容。也请勿致电Count()查看if(count > 100)。你应该这样做:if(myList.Skip(number).Any())如果你的集合有更多的记录而不是数字,这将是真的。