2013-04-23 2 views
0

Where 절을 함수에서받은 부울 값에 따라 적용 할 필드를 변경하려고합니다. 내가 참으로 bValueIsString 설정하면 ..LINQ where 다른 필드가있는 절

Conversion from string "someString" to type 'Integer' is not valid. 

을 :

Public Function SomeFunction(ByVal value As String, Optional bValueIsString As Boolean = False) As JsonResult 
    ... 
    Dim q = (From t In table 
       Where If(bValueIsString, t.Desc=value, t.Id=value) 
       Select New With {.Id, 
            .LongDescription, 
            .Desc)}) 
    ... 
End Function 

을하지만 계속 받기 : 지금까지 나는이 있습니다.

-

내가 ScottGu의 동적 LINQ 도서관에 대해 알고 있지만, 가능하면 차라리 외부 구성 요소를 사용하지 것이다 ..

답변

1

이있는 IF 함수에 피연산자 둘, 셋, 동일한 유형이 있어야하기 때문에 , 또는 암시 적으로 변환 가능하여 자동으로 변환 될 수 있습니다. 이 경우 피연산자가 정수로 변환되고 value에는 변환에 유효한 값이 없습니다. 코드를 변경하면 명시 적으로 문자열이 문제를 해결해야한다 비교 :

If(bValueIsString, t.Desc=value, t.Id.ToString()=value) 

더 읽기 this answer에 대한 주석을 참조하십시오.

+0

감사합니다. :) – jplanglais