저는 EF 코드를 먼저 사용하고 있습니다. Oracle 데이터베이스에 대해 Linq To SQL을 사용하고 있습니다. 간단히하기 위해 시나리오를 다시 시작하겠습니다. 나는이 같은 테이블 제품이 있다고 가정합니다 :IQueryable.ToList 메소드가 T-SQL 정렬 순서로 어지럽 혀졌습니다.
ProductName (varchar)
A
1
C
2
B
3
4
글쎄, 내가 EF를 사용하여 쿼리를 작성 : 나는 디버깅 할 때
var query = Repo.Products.AsQueryable().OrderBy(p => p.ProductName);
, 내가 생성 된 T-SQL을 얻고 오라클에서 실행을, 모든게입니다 좋습니다, 결과 집합은 다음과 같습니다.
문자의 우선 순위를 고려할 때 적합합니다 (필드는 varchar/string 임). 지금 내가 할 경우 다음과 같은 확인
:
var list = query.ToList();
결과는 다음과 같습니다
A
B
C
1
2
3
4
이 잘못이며, 오라클 결과 집합에서 다른. OrderBy() 전에 ToList()를 호출하면 결과가 올바르게 정렬되지만 필터링하기 전에 모든 레코드를 가져 오지 않도록 ToList()를 호출하지 않습니다.
저는 정말이 문제에 열중하고 있습니다. 누구든지 도울 수 있니?
여기에 다른 현상이 있습니까? 나는 이것을 끝까지 재현 할 수 없다. – IronMan84
아무 것도 아니지만, 오라클 데이터베이스에 대한 모든 linq 쿼리는 orderby를 사용하여 숫자 앞에 문자를 배치합니다. 생성 된 T-SQL이 정확하고 완벽하게 순서가 테스트 된 경우에도 마찬가지입니다. 벌써 화가 나있어. –
결과를 가져 와서 객체 목록으로 변환 할 때 ToList에 문제가있는 것처럼 보입니다. ToList 메서드를 디버깅하는 방법이 있습니까? –