Her*_*ill 192 linq-to-sql
我该怎么做呢
Select top 10 Foo from MyTable
Run Code Online (Sandbox Code Playgroud)
在Linq to SQL?
Ada*_*sek 248
使用Take方法:
var foo = (from t in MyTable
select t.Foo).Take(10);
Run Code Online (Sandbox Code Playgroud)
在VB中LINQ有一个take表达式:
Dim foo = From t in MyTable _
Take 10 _
Select t.Foo
Run Code Online (Sandbox Code Playgroud)
从文档:
Take<TSource>
枚举source
并生成元素,直到count
元素被生成或不source
包含更多元素.如果count
超过source
元素数,source
则返回所有元素.
Dav*_*ert 143
在VB中:
from m in MyTable
take 10
select m.Foo
Run Code Online (Sandbox Code Playgroud)
这假设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.
Inc*_*c33 22
OP实际上也提到了偏移,所以对于ex.如果你想把物品从30到60,你会这样做:
var foo = (From t In MyTable
Select t.Foo).Skip(30).Take(30);
Run Code Online (Sandbox Code Playgroud)
使用"跳过"方法进行偏移.
使用"Take"方法进行限制.
小智 13
@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
};
Run Code Online (Sandbox Code Playgroud)
不同于通过idNews降序整数tbl_News然后取4
Run Code Online (Sandbox Code Playgroud)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);
不?结果可能会有所不同.
小智 5
这适用于C#
var q = from m in MyTable.Take(10)
select m.Foo
Run Code Online (Sandbox Code Playgroud)
take 发生在客户端还是数据库中取决于您应用 take 运算符的位置。如果您在枚举查询之前应用它(即在 foreach 中使用它或将其转换为集合之前),则将导致“top n”SQL 运算符被发送到数据库。如果运行 SQL 探查器,您可以看到这一点。如果您在枚举查询后应用 take,它将在客户端上发生,因为 LINQ 必须从数据库中检索数据以便您通过它进行枚举
归档时间: |
|
查看次数: |
168143 次 |
最近记录: |