2011-09-27 4 views
1

실패 어디에서 다음을 수행 할 수 있습니다. ToList()가 없으면 투영법에서 .ToString 메서드를 찾거나 사용하지 못합니다. ViewModel.ID는 클라이언트의 문자열입니다.Linq에가 : ToString을 포함하는 절은

이 질문 here은 같은 문제에 대해 where 절을 제외한 부분을 말하지만 대답은 모든 제품을 로컬에서 가져 오는 문제를 해결하지 못합니다.

사용자가 값을 변경하면 knockout.js가 숫자에서 문자열로 변환되기 때문에 내 ViewModel.ID가 string입니다. 나는 아마도 이것을 배제하는 것이 더 쉬운 것처럼 내가 먼저 이것을 추구 할 것이라고 생각했다.

+0

모든 데이터를 다시 가져와야 함에도 불구하고,'ToString'으로 "Where"는 "실패"합니까? –

+1

@pst : "* ToList()가 없으면 프로젝션에서 .ToString 메서드를 찾아서 사용하지 못합니다." -OP –

답변

7

잘못된 방향에서 문제가 다가오고 있다고 생각합니다. ViewModel.ID을 다시 정수 (int.Parse)로 변환하면 필터링을 데이터베이스로 다시 오프로드 할 수 있습니다. 이것은 p.ID을 데이터베이스의 문자열로 캐스팅하는 임시 해결 방법보다 훨씬 낫습니다. DB에서 값의 인덱싱을 무력화시킬 가능성이있는 작업입니다.

+0

틀림없이 정확합니다. 지금까지이 비교를 변환하는 가장 좋은 장소는 람다 식을 반환하는 쿼리 개체 나 사양을 사용하는 것입니다. 이렇게하면 문자열과 출력 int를 받아 들일 수 있습니다. TYVM –

관련 문제