다음 LINQ 쿼리는 다음과 같습니다. 확장 방법의 호출이 제대로 작동 Visual Basic의 2010 년 선택LINQ 확장 메서드 호출을 변환하는 방법 해당 표현 트리로 선택
Dim qAvSalary = qJobData.Select(Function(e) e.AvSalary)
그러나하고는 그래서 내가 쿼리 (예를 들어, AvSalary) 문자열 변수를 사용하여 원하는 속성의 이름을 지정할 수 없습니다입니다. LINQ 표현식 트리를 사용하면 가능합니다. 검색어를 해당 표현식 트리로 변환하는 방법에 대한 검색과 시도가 성공적이지 못했습니다. 내 마지막 방법은 다음과 같습니다이 문을 실행
는' The IQueryable data to query.
Dim queryableData As IQueryable(Of JobData) = qJobData.AsQueryable()
Dim pe As ParameterExpression = Expression.Parameter(GetType(JobData), "e")
Dim sPropertyName = "AvSalary" ' or some other property depending on the business logic
Dim propex = Expression.Property(pe, sPropertyName)
Dim selectCallExpr As MethodCallExpression = Expression.Call(
GetType(Queryable),
"Select",
New Type() {queryableData.ElementType},
queryableData.Expression,
Expression.Lambda(Of Func(Of JobData, System.Nullable(Of Int32)))(
propex,
New ParameterExpression() {pe}))
다음과 같은 예외가 발생합니다 :
메시지 = 선택 "에 대 한 통상"System.Linq.Queryable "인도 표준시 MIT 서재 bereitgestellten Typargumenten 싶게"Keine는 메도가 generische " Argumenten kompatibel. 해결 방법은 형식 코드 생성기를 사용하십시오. "
무엇이 잘못 되었습니까?
_AvSalary_ 속성이 _Integer_ 유형이라고 가정 할 때 어디에서 지정해야합니까? –
새로운 유형() {queryableData.ElementType의 typeof (int)를} 내가 노력 – usr
: 새로운 유형() {queryableData.ElementType, GetType을 (정수)}, 여전히 같은 예외 ... –