2010-03-12 3 views

답변

10

당신은Distinct를 정렬한다 데이터베이스, 심지어 적은 수의 작업으로 유지됩니다. Distinct'ing (일반적으로 Hash 알고리즘이 사용됨)이있을 때 어느 누구도 주문을 보존하지 않습니다.

+0

이 코드는 컴파일되지 않습니다. OrderBy는 다음과 같은 오류 메시지를 표시합니다.'형식 인수는 사용법에서 유추 할 수 없습니다. 타입 인자를 명시 적으로 시도해보십시오.' –

+0

오, 알겠습니다. 아이템이 이미 선택되었으므로'OrderBy (o => o)'이어야합니다. ('IQueryable '으로 작업하고 있습니다.) 나는 당신의 코드를 수정했고 당신에게 체크 표시를 주었다 - 고마워! –

+0

@BlueRaja : 네가 그랬다. 수정 주셔서 감사! –

1

이 질문은 객체 Linq에 대한 규칙에 대해 설명 : 다음에 Preserving order with LINQ

는 순서를 보존에 대한 보증이 제공되지 않는

+0

여전히'SELECT DISTINCT ... ORDER BY ... '라는 쿼리는 SQL Server에서 기대할 수있는 것처럼 작동하며 다른 DBMS에서도 가능성이 있습니다 -이 경우에는'orderby' LINQ 절이 무시되는 이유가 있습니까 SQL (적어도 오류가 발생할 수 있음)? 여전히 버그라고 생각합니다. LINQ 쿼리는'String []'에서 사용될 때 올바르게 작동합니다. –

+0

쿼리 계획을 확인하면 DISTINCT 다음에 ORDER BY가 발생 함을 알 수 있습니다. 따라서 ORDER BY에 나타날 수있는 것에는 엄격한 제한이 있습니다. 이것은 SQL 구문이 혼란을 일으키는 또 다른 경우입니다. –

+0

"쿼리 계획"이란 무엇이며 어떻게 볼 수 있습니까? 위의 쿼리는 SQL Server 2008 Profiler를 사용하여 얻었지만 분명히 최종 쿼리 만 제공합니다. –