我该怎么做呢
Select top 10 Foo from MyTable
在Linq to SQL?
使用Take方法:
var foo = (from t in MyTable select t.Foo).Take(10);
在VB中LINQ有一个take表达式:
Dim foo = From t in MyTable _ Take 10 _ Select t.Foo
从文档:
Take
枚举source
并生成元素,直到count
元素被生成或不source
包含更多元素.如果count
超过source
元素数,source
则返回所有元素.
在VB中:
from m in MyTable take 10 select m.Foo
这假设MyTable实现了IQueryable.您可能必须通过DataContext或其他提供程序访问它.
它还假设Foo是MyTable中的一个列,它被映射到属性名称.
有关更多详细信息,请参见http://blogs.msdn.com/vbteam/archive/2008/01/08/converting-sql-to-linq-part-7-union-top-subqueries-bill-horst.aspx.
使用Take(int n)
方法:
var q = query.Take(10);
OP实际上也提到了偏移,所以对于ex.如果你想把物品从30到60,你会这样做:
var foo = (From t In MyTable Select t.Foo).Skip(30).Take(30);
使用"跳过"方法进行偏移.
使用"Take"方法进行限制.
@Janei:我在这里的第一条评论是关于你的样本;)
我想如果你喜欢这个,你想要4,然后对这4个应用排序.
var dados = from d in dc.tbl_News.Take(4) orderby d.idNews descending select new { d.idNews, d.titleNews, d.textNews, d.dateNews, d.imgNewsThumb };
不同于通过idNews降序整数tbl_News然后取4
var dados = (from d in dc.tbl_News orderby d.idNews descending select new { d.idNews, d.titleNews, d.textNews, d.dateNews, d.imgNewsThumb }).Take(4);
不?结果可能会有所不同.
这适用于C#
var q = from m in MyTable.Take(10) select m.Foo