LINQ에서 엔터티까지 대소문자 구분 비교 달성
Thingies.First(t => t.Name == "ThingamaBob")
과 같은 LINQ to Entities 쿼리는 기본적으로 대/소문자를 구분하지 않을 수 있습니다. 이는 LINQ to Entities가 Lambda 표현식을 SQL로 변환하기 때문입니다. 여기서 대소문자 구분은 SQL Server 데이터베이스의 데이터 정렬 설정에 따라 달라집니다.
데이터베이스 수준 솔루션: 데이터 정렬 수정
대소문자 구분 비교를 보장하는 가장 효율적인 방법은 열의 데이터 정렬을 대소문자 구분 옵션으로 변경하는 것입니다. 예를 들어 Name
테이블의 Thingies
열을 대소문자를 구분하려면 다음 SQL 명령을 사용하세요.
<code class="language-sql">ALTER TABLE Thingies ALTER COLUMN Name VARCHAR(25) COLLATE Latin1_General_CS_AS</code>
클라이언트측 접근 방식: 개체에 LINQ 활용
데이터베이스 정렬을 수정할 수 없는 경우 LINQ to Objects를 사용하는 클라이언트 측 솔루션이 대안을 제공합니다. 여기에는 초기 데이터베이스 쿼리와 AsEnumerable()
을 사용한 메모리 내 비교가 포함됩니다. 예:
<code class="language-csharp">Thingies.Where(t => t.Name == "ThingamaBob") .AsEnumerable() .First(t => t.Name == "ThingamaBob");</code>
초기 데이터베이스 필터링 이후 메모리 내에서 대소문자 구분 검사를 수행합니다. 이 방법은 서버측 데이터 정렬 변경보다 성능이 떨어질 수 있습니다.
위 내용은 LINQ에서 엔터티에 대한 대/소문자 구분 비교를 수행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!