2009-05-13 2 views
3

필 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 

답변

2

나는 긍정적 아니에요하지만 난 그것이 식 (TDelegate) 반대로 당신이 무엇을 기대되는있는 OrderBy로 문자열을 전달한다는 사실과 관련이있다 생각합니다.

이 기사를보고 도움이되는지 확인하십시오.

http://msdn.microsoft.com/en-us/library/bb549264.aspx

편집 :

나는 필의 코드에서와 스콧 구에서 제공하는 몇 가지 추가 문서에서 살펴 보았다

. 주문할 문자열을 전달할 수 있어야합니다. 그렇다면 내 다음 질문은 앱을 작동하여 주문을 꺼내는 것입니까? 그 이유는 우리가 누락 된 또 다른 기본적인 오류가 있는지 궁금합니다. 예를 들어 JSON (jsondata)을 반환하지만 Jsondata를 초기화하는 위치는 표시되지 않습니다. 지금 나는 당신이 orderby 진술에 그것을 얻고 있다고 말하면서 당신의 오류라고 생각하지 않는다. 그러나 주문하려고하는 객체가 비어있어 실제로 오류가 발생하는 경우 다른 근본적인 문제가 있습니다.

+0

위해 일한 내가있는 OrderBy (기능 (X) x.FirstName)과 같은 식을 사용할 때이 작업을 수행하지만 필의 게시물에 - 그는 어떻게 할 수 C#을 사용하여 문자열을 전달하십시오. 그러나이 같은 접근법은 유효한 표현식을 필요로합니까? –

+0

간결함을 위해 return 문 앞에 코드의 상당 부분을 생략했습니다. 다음과 같이 사용하면 문제가 해결되지 않으므로 다른 것이 잘못되었다고 생각하지 않습니다. Dim FilteredAndSortedList = list.OrderBy (Function (x) x.FirstName) .Skip (pageIndex * pageSize) .Take (pageSize) Return –

+0

이렇게하면 sidx + ""sord를 User 객체의 속성으로 변환하려고 할 것입니다. . 나는 sidx + "+ sord가 참으로 직접 속성으로 변환 할 수 있는지 살펴볼 것입니다. –

관련 문제