1
이 LINQ의 MySQL의 DbContext에 쿼리가 있습니다C# 엔티티 프레임 워크 Linq에 어디에 문제
var letter1 = (from l in dbContext.letters_incoming
where l.LetterText.Trim() == "simple letter text".Trim()
select l).FirstOrDefault();
var letter2 = dbContext.letters_incoming.Where(new Func<ModelLetterIncoming, bool>(l => {
string name = l.LetterText;
if (name == "simple letter text")
return true;
else return false;
})).FirstOrDefault();
첫 번째 쿼리가 null 반환하지만 두 번째 반환 올바른 값은. Where Where 조건에서 공백으로 인해 발생할 수 있습니까?
작동 중복 제거 할 수 있습니다. 이것은 선행 또는 후행 공백이없는 문자열 리터럴이며 Trim()은이를 제거합니다. – RH6
첫 번째 linq 쿼리는 SQL 쿼리로 변환되어 데이터베이스에서 실행됩니다. 두 번째는'letters_incoming' 테이블 전체를 메모리로 가져 와서 필터링을 수행합니다. 이것은 차이를 유발할 수 있습니다 (정확히는 확실하지 않지만). 어떤 SQL 쿼리가 log (dbContext.Database.Log = Console.WriteLine'과 같이)를 사용하여 생성되었는지 확인하고 어떤 쿼리가 생성되었는지와 왜 라인을 찾지 못하는지를 확인할 수 있습니다. 일부 데이터 정렬 문제 일 수 있습니다 (특히 문자열이 영어가 아닌 경우). – Evk
정말로 오류가 표시되지 않습니다.이 코드로 문제를 정확히 확인할 수 있습니까? –