2009-06-29 8 views
2

레거시 데이터베이스에 대해 일부 CRUD 기능을 만들고 ORM 도구로 Entity Framework를 사용하려고합니다. '사이트'테이블에는 사용자가 본 적이없는 'Id'열과 사이트를 식별하는 데 사용되는 정수 유형 'SiteId'가 있습니다.형식 변환을 사용하여 Linq에서 Entity/Entity SQL으로 최대 선택

숫자 SiteId 열의 유형이 데이터베이스에 varchar (10) 인 이유는 알고 있지만 거기에있는 모든 SiteId는 정수이며 이후의 모든 SiteIds도 정수가됩니다.

새로운 고유 한 정수형 SiteId를 생성하기 위해 Entity SQL 또는 Linq to Enities를 사용하여 효과적으로 'SELECT MAX (SiteId)'를 수행 할 수 있습니까?

즉, 어떻게하면 열의 모든 값을 varchar (10)에서 int로 변환하고 해당 집합에서 최대 값을 선택할 수 있습니까 ??

이 유망 보였지만, LINQ는 "저장 프로 시저"로 해석을 변환 할 수 없습니다 ...

int x = entities.Sites.Max(s => int.Parse(s.SiteId)); 

답변

3

이 작동 ...

String[] numbers = new String[] { "2", "34", "5", "23", "5", "1" }; 

var max = numbers.Max(x => Int32.Parse(x)); 
+1

고마워, L2E는 분명히 구문 분석을 SQL로 변환 할 수 없지만 1 단계로 쉽게 해결할 수 있습니다. 최종 솔루션 : string [] x = entities.Sites.Select (s => s.SiteId) .ToArray(); int y = x.Max (i => int.Parse (i)); – andrej351