LINQ 쿼리에서 null 값 처리: "변환 실패" 오류 해결
LINQ 쿼리를 실행할 때 개발자에게 "구체화된 값이 null이므로 'Int32' 값 유형으로 변환할 수 없습니다."라는 오류가 발생할 수 있습니다. 이 문제는 null 허용 값을 null 허용이 아닌 값 유형 hour로 변환하려고 할 때 발생합니다. .
다음 LINQ 쿼리는 이러한 상황을 보여줍니다.
<code>var creditsSum = (from u in context.User join ch in context.CreditHistory on u.ID equals ch.UserID where u.ID == userID select ch.Amount).Sum();</code>
이 쿼리는 CreditHistory 테이블의 특정 사용자 ID에 대한 Amount 열의 합계를 계산합니다. 그러나 CreditHistory 테이블에 지정된 사용자에 대한 레코드가 없으면 ch.Amount 표현식은 null을 반환합니다. 이 null 값은 null을 허용하지 않는 값 유형 Int32로 변환될 수 없으므로 오류가 발생합니다.
해결책: Null 값 처리
LINQ 쿼리에서 null 허용 값을 처리하기 위해 가능한 접근 방식은 두 가지가 있습니다.
<code>var creditsSum = (from u in context.User join ch in context.CreditHistory on u.ID equals ch.UserID where u.ID == userID select ch.Amount).DefaultIfEmpty(0).Sum();</code>
<code>var creditsSum = (from u in context.User join ch in context.CreditHistory on u.ID equals ch.UserID where u.ID == userID select (int?)ch.Amount).Sum() ?? 0;</code>
이 버전에서 (int?)ch.Amount 표현식은 값을 명시적으로 int?로 변환하여 null이 될 수 있음을 나타냅니다. 후속 ?? 연산자는 모든 null 값을 기본값 0으로 바꿉니다.
이 두 가지 방법 중 하나를 구현하면 쿼리가 null 값을 성공적으로 처리하고 원하는 결과를 반환할 수 있습니다.
위 내용은 LINQ에서 Nullable 정수를 합산할 때 '캐스트 실패' 오류를 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!