J'essaie de suivre la démo de cette Lien pour ajouter un JQGrid à une application MVC.
J'ai une table nommée des entreprises que j'essaie d'afficher dans une grille. Une entreprise contient simplement un identifiant et un nom. P>
Je cours dans une erreur dans ma fonction de contrôleur: p> Je reçois une erreur sur la ligne qui appelle Order Orderby (): P> Les arguments de type pour la méthode 'system.linq.enumerable.orderby (System.Collections.Generic.Inédirent, system.func)' ne peuvent pas être déduits de l'utilisation. Essayez de spécifier les arguments de type explicitement. P>
BlockQuote> Je n'ai vraiment aucune idée de ce que signifie l'erreur, et je n'ai pas été en mesure de trouver une explication. Je ne sais pas ce qui provoque cette erreur sur une fonction d'ordre simple. P> p>
6 Réponses :
Vous ne pouvez pas Vous devez utiliser Dynamic Linq , comme mentionné dans le tutoriel. P> ORDREBY CODE> une chaîne; Vous devez passer une expression de Lambda ou un délégué. P>
Avez-vous un exemple de comment je peux le faire ici?
Vous devez simplement inclure la bibliothèque et l'espace de noms.
J'essaie d'utiliser Dynamic Linq. Le problème est que je ne connais pas la propriété que je trie. Je le passe comme une corde. Comment puis-je convertir la chaîne en une expression Lambda?
Si vous utilisez Dynamic Linq, vous pouvez transmettre une chaîne. Sinon, vous aurez besoin de construire un arbre d'expression.
Je ne peux pas passer une chaîne, ma fonction Orderby () ne prend pas une chaîne en tant que paramètre. Il s'attend à ce que System.Linq.expressions.expression
@Steven: Avez-vous ajouté le en utilisant code> instruction pour dynamique LINQ?
Ajouter "à l'aide de system.linq.dynamic" en haut du fichier.
Cela ne compilera pas non plus. Il faut un délégué, pas une chaîne.
Oui, c'est ce que j'ai dit. Je n'essaie pas de lui apprendre à faire ce qu'il tente, j'essaie simplement d'expliquer ce que dit le compilateur.
La réponse spécifique à cette question est que vous devez ajouter et vous devez ajouter une référence à dynamic.dll code> dans votre projet. P > p>
Cela devrait être la bonne réponse. Aucune idée pourquoi cela n'est pas accepté comme réponse.
Dans mon cas, c'est à l'aide du système.Linq.dynamic.core; et ne pas utiliser system.linq.dynamic. Notez le noyau
en utilisant system.linq.dynamic.core; est bien nécessaire, au moins dans .NET 5.0
Je sais que c'est une erreur d'école-garçon de ma part, mais j'ai eu cette même erreur "CS0411 les arguments de type pour la méthode" Enumérable.orderby (iEnumerable, Func) "ne peut pas être déduit de l'utilisation. Essayez de spécifier le type Arguments explicitement. ".
Il allume la" propriété "que je traitais, était en fait une fonction et j'avais omis le" () ". Il m'a fallu des âges de trouver! P>
dans mon code exerpt: p> devrait avoir été p>
Pourrait ne pas être le bon endroit, mais vous avez sauvé ma vie.
Merci, cela a résolu mon problème. J'ai supposé que quelque chose était une propriété et non une fonction ...
system.linq.dynamic.dll.dll code> à votre projet. LI>
- Ajoutez ensuite l'espace de noms:
à l'aide du système.LINQ.DYNAMIC; CODE> LI>
ol>
n'existe pas dans le noyau .NET Noyau ou EF. Toute alternative?
Si vous référencez system.linq.dynamic code>, n'oubliez pas d'ajouter
à l'aide de system.linq.dynamic; code>
Si vous référencez
system.linq.dynamic.core code>, n'oubliez pas d'ajouter
à l'aide de system.linq.dynamic.core; code> p> p>
Il suffit d'ajouter
à l'aide de system.linq.dynamic; code> ou
à l'aide de system.linq.dynamic.core; code> pour les projets de base.