Answers:
在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方法:
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
则返回的所有元素。
@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);
不行吗 结果可能有所不同。
我喜欢这样:
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
};
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();
这样,它为我工作:
var noticias = from n in db.Noticias.Take(6)
where n.Atv == 1
orderby n.DatHorLan descending
select n;
对于limit 1
使用方法FirstOrDefault()
或First()
。
例
var y = (from x in q select x).FirstOrDefault();