답변:
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는 다음과 같은 표현을 가지고 있습니다.
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를 기준으로 전체 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);
아니 ? 결과가 다를 수 있습니다.
나는 이것을 좋아한다 :
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
};
테이크가 클라이언트에서 발생하는지 또는 db에서 발생하는지는 테이크 연산자를 적용하는 위치에 따라 다릅니다. 쿼리를 열거하기 전에 (즉, foreach에서 쿼리를 사용하거나 컬렉션으로 변환하기 전에) 적용하면 "top n"SQL 연산자가 db로 전송됩니다. SQL 프로파일 러를 실행하면이를 볼 수 있습니다. 쿼리를 열거 한 후 테이크를 적용하면 클라이언트에서 발생합니다. LINQ는 데이터베이스에서 데이터를 검색해야합니다.
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();