SSMS에서 실행되고 원하는대로 32 개 결과 집합을 가져 오는 쿼리가 있습니다 (SQL에서).LINQ 쿼리가 메모리 내 데이터에 사용될 때 잘못된 결과를 반환합니다.
그런 다음 SQL 쿼리를 LINQ 쿼리로 변환하여 동일한 데이터베이스에 대해 Visual Studio에서 실행하고 원하는대로 32 개 행 목록을 가져옵니다.
여기에 문제가 있습니다. 나는이
MyEntities entities = new MyEntities();
List<MyEntity> resultset = entities.MyEntity.ToList();
그런 짓을 ... 그리고 메모리 데이터 수집에 대한 내 LINQ 쿼리를 실행하면 난 단지 27 개 행을 얻을 현재 행의 일부는 심지어 별개되지 않도록 반복 -하지만 그들은 확실히 데이터베이스에 있습니다.
LINQ는 데이터베이스에 쿼리를 보낼 때 SQL을 생성하므로 결과가 정확하지만 대상이 메모리 내 데이터 구조 인 경우 다른 작업을 수행하기 때문입니다. 여기서 무슨 일이 일어나고 있는지 확실하지 않습니다. 이견있는 사람? 미리 감사드립니다!
편집 : 설명하기 만하면됩니다. 이것은 올바른 결과
List<MyEntity> results = entities.MyEntity.Where(x => x == ...).ToList();
이 그것을 해결되지
MyEntities entities = new MyEntities();
List<MyEntity> listData = entities.MyEntity.ToList();
List<MyEntity> results = listData.Where(x => x == ...).ToList();
생성 된 SQL 쿼리는 무엇입니까? SQL Server 프로파일 러를 체크인하십시오. –
이 같은 차이점의 일반적인 이유 중 하나는 Sql이 linq에서 객체로 대소 문자를 구분하는 경우 대개 대/소문자를 구분하지 않는다는 것입니다. – sgmoore
불행히도 서버에서 추적을 실행할 수있는 권한이 없습니다. 아마 내가 충분히 명확하지 않았습니다. 쿼리가 데이터베이스에 대해 직접 실행될 때 올바른 결과가 반환되었다고 말했을 때, 이것이 내가 의도 한 것입니다. 리스트 result = entities.MyEntity.Where (x = > x = ..). ToList(); –