필 Haack here에서 최종 솔루션을 가져오고 그의 킬러 LINQ 쿼리를 사용하여 정렬하는 대신 데이터 컨텍스트를 사용하는 대신, IEnumerable (Of T)에 대해 쿼리하고 싶습니다 ... 행운이 없습니다.IEnumerable (Of T)가 포함 된 System.LINQ.Dynamic 어셈블리를 사용하는 방법
Public Function DynamicGridData(ByVal sidx As String, ByVal sord As String, ByVal page As Integer, ByVal rows As Integer) As ActionResult
Dim list As List(Of User) = UserService.GetUserCollection()
Dim FilteredAndSortedList = list.OrderBy(sidx + " " + sord).Skip(pageIndex * pageSize).Take(pageSize)
Return JSON(jsonData)
End Function
현재 나는 공공 기능있는 OrderBy '확장 방법 TEH 형식 매개 변수 (들)의 내 .OrderBy (sidx + ""+ sord) 라인
"데이터 유형 (들) (아래의 오류 (System.Linq.Enumerable)에서 정의 된 System.Linq.IOrderedEnumerable (Of User)이 이러한 인수에서 유추 될 수 없으므로 TKey (System.Linq.Enumerable로 정의 된 System.Linq.IOrderedEnumerable (Of User) '는이 인수에서 유추 할 수 없으므로 KeySelector는 System.Func (Of User, TKey) 명시 적으로이 오류를 수정할 수 있습니다. "
는 편집 :
나는 예제에서 내 "목록"위의 유형에 IQueryable의 아니라고 할 문제를 발견했다. .AsQueryable()을 추가하는 것만으로 트릭을 만들었습니다!
Public Function DynamicGridData(ByVal sidx As String, ByVal sord As String, ByVal page As Integer, ByVal rows As Integer) As ActionResult
Dim list As List(Of User) = UserService.GetUserCollection()
Dim FilteredAndSortedList = list.AsQueryable().OrderBy(sidx + " " + sord).Skip(pageIndex * pageSize).Take(pageSize)
Return JSON(jsonData)
End Function
위해 일한 내가있는 OrderBy (기능 (X) x.FirstName)과 같은 식을 사용할 때이 작업을 수행하지만 필의 게시물에 - 그는 어떻게 할 수 C#을 사용하여 문자열을 전달하십시오. 그러나이 같은 접근법은 유효한 표현식을 필요로합니까? –
간결함을 위해 return 문 앞에 코드의 상당 부분을 생략했습니다. 다음과 같이 사용하면 문제가 해결되지 않으므로 다른 것이 잘못되었다고 생각하지 않습니다. Dim FilteredAndSortedList = list.OrderBy (Function (x) x.FirstName) .Skip (pageIndex * pageSize) .Take (pageSize) Return –
이렇게하면 sidx + ""sord를 User 객체의 속성으로 변환하려고 할 것입니다. . 나는 sidx + "+ sord가 참으로 직접 속성으로 변환 할 수 있는지 살펴볼 것입니다. –