【发布时间】:2010-09-16 13:44:03
【问题描述】:
我该怎么做
Select top 10 Foo from MyTable
在 Linq to SQL 中?
【问题讨论】:
标签: linq-to-sql
我该怎么做
Select top 10 Foo from MyTable
在 Linq to SQL 中?
【问题讨论】:
标签: linq-to-sql
使用Take method:
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<TSource>枚举source并产生元素,直到产生count元素或source不再包含元素。如果count超过source的元素个数,则返回source的所有元素。
【讨论】:
这种方式对我有用:
var noticias = from n in db.Noticias.Take(6)
where n.Atv == 1
orderby n.DatHorLan descending
select n;
【讨论】:
OP 实际上也提到了偏移量,例如。如果你想从 30 到 60 的项目,你会这样做:
var foo = (From t In MyTable
Select t.Foo).Skip(30).Take(30);
对偏移使用“跳过”方法。
使用“Take”方法进行限制。
【讨论】:
在 VB 中:
from m in MyTable
take 10
select m.Foo
这假设 MyTable 实现了 IQueryable。您可能必须通过 DataContext 或其他提供程序来访问它。
它还假设 Foo 是 MyTable 中映射到属性名称的列。
【讨论】:
我不得不使用 Take(n) 方法,然后转换为列表,就像一个魅力:
var listTest = (from x in table1
join y in table2
on x.field1 equals y.field1
orderby x.id descending
select new tempList()
{
field1 = y.field1,
active = x.active
}).Take(10).ToList();
【讨论】:
Array oList = ((from m in dc.Reviews
join n in dc.Users on m.authorID equals n.userID
orderby m.createdDate descending
where m.foodID == _id
select new
{
authorID = m.authorID,
createdDate = m.createdDate,
review = m.review1,
author = n.username,
profileImgUrl = n.profileImgUrl
}).Take(2)).ToArray();
【讨论】:
使用Take(int n) 方法:
var q = query.Take(10);
【讨论】:
take 发生在客户端还是数据库中取决于您应用 take 运算符的位置。如果在枚举查询之前应用它(即在 foreach 中使用它或将其转换为集合之前),则 take 将导致“top n”SQL 运算符被发送到数据库。如果您运行 SQL 探查器,您可以看到这一点。如果您在枚举查询后应用 take,它将发生在客户端上,因为 LINQ 必须从数据库中检索数据以便您通过它进行枚举
【讨论】:
@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 降序然后取 4 对整个 tbl_News 进行排序
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);
不是吗?结果可能不同。
【讨论】:
从DataBase中取数据不排序与随机取数据是一样的
【讨论】:
我喜欢这样:
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
};
【讨论】:
这在 C# 中运行良好
var q = from m in MyTable.Take(10)
select m.Foo
【讨论】:
您将使用 Take(N) 方法。
【讨论】: