Nice programing

Linq에서 목록으로 반환되는 결과 수 제한

nicepro 2020. 11. 26. 19:51
반응형

Linq에서 목록으로 반환되는 결과 수 제한


Linq / EF4.1을 사용하여 데이터베이스에서 일부 결과를 가져오고 결과를 (X) 가장 최근 결과로 제한하고 싶습니다. 여기서 X는 사용자가 설정 한 숫자입니다.

이를 수행하는 방법이 있습니까?

현재 List결과 집합을 제한하는 데 도움이 되는 것처럼 다시 전달하고 있습니다. X를 누를 때까지 반복하여 이것을 제한 할 수 있지만 추가 데이터를 전달하지 않는다고 가정합니다.

관련성이있는 경우를 대비하여 ... SQL Server 데이터베이스에서 실행되는 C # MVC3 프로젝트.


Take기능 사용

int numberOfrecords=10; // read from user
listOfItems.OrderByDescending(x => x.CreatedDate).Take(numberOfrecords)

listOfItems엔터티 개체의 목록이고 CreatedDate생성 된 날짜 값이있는 필드 라고 가정 합니다 (여기에서 최근 항목을 가져 오기 위해 내림차순으로 정렬하는 데 사용됨).

Take () 함수는 시퀀스의 시작 부분에서 지정된 수의 연속 요소를 반환합니다.

http://msdn.microsoft.com/en-us/library/bb503062.aspx


results = results.OrderByDescending(x=>x.Date).Take(10);

OrderByDescending은 날짜 / 시간 속성 (또는 최신 항목을 가져 오는 데 사용할 논리 포함)별로 항목을 정렬하고 Take는 처음 x 항목 (순서 덕분에 가장 최근 항목)으로 제한합니다.

편집 : 첫 번째 행에서 시작하지 않는 일부 행을 반환하려면 다음 을 사용하십시오 Skip().

results = results.OrderByDescending(x=>x.Date).Skip(50).Take(10);

Take()목록으로 변환하기 전에를 사용하십시오 . 이러한 방식으로 EF는 생성 한 쿼리를 최적화하고 필요한 데이터 만 반환 할 수 있습니다.

참고 URL : https://stackoverflow.com/questions/10883451/limit-number-of-results-being-returned-in-a-list-from-linq

반응형