J'essaie de prendre la solution finale de Phil Haack here et de trier en utilisant sa requête LINQ tueur, mais au lieu d'utiliser le contexte de données comme il est, Je veux interroger IEnumerable (Of T) ... ne pas avoir de chance.Comment utiliser l'assembly System.LINQ.Dynamic w/IEnumerable (Of T)
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
Actuellement je reçois l'erreur ci-dessous mon .OrderBy (Sidx + "" + sord) ligne
« Type de données (s) du Teh paramètre de type (s) méthode d'extension « Fonction publique OrderBy (Of TKey) (keySelector As System.Func (De l'utilisateur, TKey)) Comme System.Linq.IOrderedEnumerable (Of User) 'défini dans' System.Linq.Enumerable 'ne peut pas être déduit de ces arguments Spécifier le (s) type (s) de données explicitement pourrait corriger cette erreur. "
EDIT:
Je trouve la question d'être que ma « liste » dans l'exemple ci-dessus était pas de type IQueryable. Il suffit d'ajouter .AsQueryable() a fait l'affaire!
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
D'accord et cela fonctionne quand j'utilise une expression comme OrderBy (Fonction (x) x.FirstName), mais dans le poste de phil - comment est-il capable de passer dans une chaîne en utilisant C# encore en vb cette même approche nécessite une expression valide? –
J'ai omis une grande partie du code avant l'instruction de retour pour plus de brièveté. Si j'utilise ce qui suit, cela fonctionne très bien, donc je ne pense pas que rien d'autre ne soit cassé. Dim FilteredAndSortedList = list.OrderBy (Fonction (x) x.FirstName) .Skip (pageIndex * pageSize) .Take (pageSize) Retourne –
alors il semble que ce soit sa dernière tentative de traduire sidx + "" sord dans une propriété de votre objet User . Je voudrais jeter un coup d'oeil et voir si sidx + "" + sord peut en effet traduire directement à une propriété. –