当前位置: 首页 > 编程语言 > .NET综合 > 正文

LINQ to SQL语句(9)之Top/Bottom和Paging和SqlMethods

时间:2010-12-11 博客园 李永京

Top/Bottom操作

适用场景:适量的取出自己想要的数据,不是全部取出, 这样性能有所加强。

Take

说明:获取集合的前n个元素;延迟。即只 返回限定数量的结果集。

var q = (
  from e in db.Employees
  orderby e.HireDate
  select e)
   .Take(5);

语句描述:选择所雇用的前5个雇员。

Skip

说 明:跳过集合的前n个元素;延迟。即我们跳过给定的数目返回后面的结果集。

var q = (
  from p in db.Products
  orderby p.UnitPrice descending
  select p)
  .Skip (10);

语句描述:选择10种最贵产品之外的所有产品。

TakeWhile

说明:直到某一条件成立就停止获取;延迟。即用其条件 去依次判断源序列中的元素,返回符合判断条件的元素,该判断操作将在返回 false或源序列的末尾结束 。

SkipWhile

说明:直到某一条件成立就 停止跳过;延迟。即用其条件去判断源序列中的元素并且跳过第一个符合判断条 件的元素,一旦判断返回false,接下来将不再进行判断并返回剩下的所有元素 。

Paging(分页)操作

适用场景:结合Skip和Take就可实现对数据分 页操作。

1.索引var q = (
  from c in db.Customers
  orderby c.ContactName
  select c)
   .Skip(50)
  .Take(10);

语句描述:使用Skip和Take运算 符进行分页,跳过前50条记录,然后返回接下来10条记录,因此提供显示 Products表第6页的数据。

2.按唯一键排序var q = (
   from p in db.Products
  where p.ProductID > 50
   orderby p.ProductID
  select p)
  .Take(10);

语 句描述:使用Where子句和Take运算符进行分页,首先筛选得到仅50 (第5页最后 一个ProductID)以上的ProductID,然后按ProductID排序,最后取前10个结果, 因此提供Products表第6页的数据。请注意,此方法仅适用于按唯一键排序的情 况。