2010-07-27 25 views
10

jest to proste pytanie (myślę), ale nie byłem w stanie znaleźć rozwiązania. Wiem, że w przypadku innych typów zapytań można dodać klauzulę limitu, która powoduje, że zapytanie zwraca tylko do wielu wyników. Czy jest to możliwe z zapytaniem o jednostkę?Ograniczanie rozmiaru kwerendy za pomocą struktury encji

var productQuery = from b in solutionContext.Version 
           where b.Product.ID != 1 && b.VersionNumber == b.Product.ActiveNumber 
           orderby b.Product.LastNumber 
           select b; 

Po prostu chcę, aby to zapytanie zwróciło tylko 25 obiektów wersji. Dzięki za pomoc.

Odpowiedz

32

pewien .. na przykład można zrobić to tak:

var productQuery = from b in solutionContext.Version 
          where b.Product.ID != 1 && b.VersionNumber == b.Product.ActiveNumber 
          orderby b.Product.LastNumber 
          select b; 

var limitedProductQuery = productQuery.Take(25); 

również mogą potrzebować tego dla wyników przywoławczych:

var pagedProductQuery = productQuery.Skip(25 * page).Take(25) 
+0

To wszystko wybierze od e tabelę przed ograniczeniem wyników do pamięci. –

+5

David .. nie, to nie .. Jest to obiekt, który można przetłumaczyć ... jest odpowiednikiem zapytania ... Wykona się, gdy spróbuje pobrać jakieś obiekty lub użyć metody ToList itp. –

+0

@David, co w tym oryginalnym zapytaniu wymusza wykonanie ? – Marc

3

Czego szukasz Take:

var productQuery = (from b in solutionContext.Version 
        where b.Product.ID != 1 
         && b.VersionNumber == b.Product.ActiveNumber 
        orderby b.Product.LastNumber 
        select b).Take(25); 
3
var productQuery = (from b in solutionContext.Version 
          where b.Product.ID != 1 && b.VersionNumber == b.Product.ActiveNumber 
          orderby b.Product.LastNumber 
          select b).Take(25); 
Powiązane problemy