대다수의 행에 숫자로 된 값이있는 형식의 열이있는 테이블이 있습니다. 즉, 각 문자열에는 숫자 0 만 포함됩니다 MySQL은 9MySQL 어댑터를 사용하여 LINQ to Entity Framework에서 문자열을 long으로 변환
+------+ | n | +------+ | 123 | | 234 | | BLAH | -- This row is an exception to the rule. | 456 | | 789 | +------+
통해이 작동 : SELECT * FROM t WHERE n >= 200 AND n <= 500;
n
234의 값을 갖는 경우와 같은 행 위의 데이터 (456)를 반환.
LINQ를 Entity Framework와 함께 사용하려면 동일한 작업을 수행하고 싶습니다. 참고
var results = from n in context.t
let n_asLong = long.Parse(n) // ...I know, see note below...
where (n != null && n_asLong >= lowVal && n_asLong <= hiVal)
select n_asLong;
-
: 예, 나는 그것이 잘못된 숫자에 도달 할 때
long.Parse()
가 예외를 던질 것으로 알고 있어요. 현재 샘플 데이터에는 합법적으로 구문 분석 할 수있는 문자열 만 들어 있습니다. 나는 완전하고 포괄적 인 대답을 기대하기 위해 숫자가 아닌 항목을 포함 시켰습니다. LINQ 부호화에 관한 예외
실행 코드 결과 : 엔티티
LINQ 메소드 'INT64 파싱 (시스템 String) 메소드를 인식하지 않고,이 방법은 저장 식으로 변환 될 수 없다.
나는 SQL로 변환하려고하는 이유를 알고 있습니다.
실제로 MS-SQL을 사용한 실험을 수행하여 잘못된 데이터 ('BLAH'와 같은 숫자가 아닌 값의 경우 0을 반환 함)를 인식하는 사용자 지정 문자열 - 긴 함수를 내 보내야했습니다. LINQ to SQL과 함께, 비록 내가 원하는 것보다 훨씬 더 복잡한 해결 방법 이었지만.
하지만, 나는 MySQL 솔루션에 갇혀 있습니다. 따라서 위의 공급 업체별 해킹은 작동하지 않습니다.
에은 문자열을 값으로 처리하고 (원시 SQL에서 허용하는 것처럼) LINQ to Entity Framework에서 문자열을 처리하는 방법이 될 수는 없습니다.
일부 데이터베이스/C#/.NET/LINQ 전문가로부터 좋은 접근 방법이 있습니까?
다른 경우가 없다면 부끄러운 실행 원시 SQL 직접 솔루션을 사용하고 싶습니다.
좋은 생각 (적어도 그것은 나를 SQL 서버 Express 및 LINQPad을 사용하여 근무), 그러나 그것은 작동하지 않았다. LINQ to Entities를 사용하면 NotSupportedException이 발생합니다. LINQ to Entities가 'Int64 ToInt64 (System.String)'메서드를 인식하지 못하고이 메서드를 저장소 식으로 변환 할 수 없습니다. 이 버전의 Entity Frameworks는 뇌가 죽었다고 생각합니다. –
감사합니다, 당신의 대답은 Linq에서 SQL과 비슷한 문제로 나를 도왔습니다 ... –