2009-01-22 7 views
5

백분율을 사용하여 가기 (Take) linq 쿼리를 수행 할 수있는 방법이 있습니까? T-SQL은 다음과 같습니다.LINQ 버전의 TOP PERCENT

SELECT TOP 20 PERCENT ... 

그러나 LINQ는 int 만 필요합니다.

나는 카운트를 한 다음 테이크를해야 할 것 같습니다. 어떤 제안?

답변

4

본질적으로 쿼리를 두 번 수행해야합니다. 한 번 계산을 수행하기 위해 한 번 수행 한 다음 다시 백분율을 계산해야합니다 (20 %와 같은 수에 해당하므로).

+0

그게 내가하고있는 일이고, 나는 그것을 좋아하지 않는다 :/네이티브 SQL로 변환하는 방법이 있어야한다. –

+1

@Basallo : 불행히도, 나는 거기 있다고 믿지 않습니다. Top의 사용자 정의 재정의를 지원하기 위해 IQueryable 구현을 어떻게 든 확장하여 적절한 SQL Server 명령으로 변환 할 수 있습니다. – casperOne

+0

@tony : 한 노트, 2 회 여행이지만, 생각보다 나쁘지는 않습니다. query.Count()는 SELECT COUNT()로 실행되기 때문에 적어도 모든 행을 반환하지는 않으며 계산 한 다음 모두를 다시 선택하지는 않습니다. 다른 사람들이 말하듯이 저장된 procs와 views는 이것을 수행하는 또 다른 방법이 될 것입니다 ... – Daniel

1

LINQ to SQL에 내장 된 것이 아무것도 없다고 생각합니다. 저장 프로 시저로 수행 할 수 있습니다. 어쨌든 프로 시저를 사용하지 않는 한 그렇게 많이 좋아하지 않지만 두 가지 별도의 쿼리로 처리하는 것보다 낫습니다.

+0

보기가 더 적절할 것입니다. –