2012-12-08 4 views
0

여기에 LINQ 쿼리에서 int로 쿼리변환 문자열이

db.setupBrands.Where(x => 
    Convert.ToInt32(x.SortKey) <= id && 
    Convert.ToInt32(x.SortKey) >= desID) 
.Select(x => x); 

여기 SortKey입니다 내가 int로 변환 할 문자열 유형입니다. Convert.ToInt32()에서 다음과 같은 오류가 발생했습니다.

LINQ to Entities는 'Int32 ToInt32 (System.String)'메서드를 인식하지 못하고이 메서드를 저장소 식으로 변환 할 수 없습니다.

+1

당신의'SortKey' 속성은 항상 정수의 경우, 당신은 왜 문자열로 그것을 가지고 마십시오 개요? –

+0

SortKey가 String Type ... @Jon Skeet –

+1

예, 알 수 있습니다. 내 요점은 * 왜 *? 숫자 값이 항상있는 경우 스키마에서 정수로 지정하는 것이 좋습니다. –

답변

2

EF는 변환 및 구문 분석을 번역 할 수 없습니다. 나는 완전히 SortKey 경우 nchar(4)이 시도 할 수 있습니다, 위의 동의하지만, : 관심의 아웃

string s_id = string.Format("{0:0000}", id); 
string s_desID = string.Format("{0:0000}", desID); 

db.setupBrands.Where(x => 
    x.SortKey <= s_id && 
    x.SortKey >= s_desID) 
.Select(x => x);