J'ai vu la fonction suivante dans un affichage qui permet de commander des données en utilisant une expression générique:Problème avec la fonction générique Linq OrderBy
public static IOrderedQueryable<T> OrderBy<T, TKey>(
this IQueryable<T> source, Expression<Func<T, TKey>> func, bool isDescending) {
return isDescending ? source.OrderByDescending(func) : source.OrderBy(func);
}
Lorsque je tente d'utiliser cette fonction que je reçois une erreur « Le type ou le nom d'espace de noms « TKEY » n'a pas pu être trouvée (vous manque une directive à l'aide ou une référence d'assemblage?) » Je fais ici quelque chose de stupide, mais je ne peux pas le comprendre
Edit:..
Après avoir fait un peu plus de recherche, je pense que mon problème est de construire l'Expr ession que je passe dedans. Est-il possible de construire une expression pouvant contenir différents types? Disons que mon ensemble de données a une chaîne, un int, et un bool et je veux utiliser la fonction générique ci-dessus pour trier par l'un des éléments. Comment puis-je faire cela?
Je travaille maintenant ce:
if (IsString)
{
Expression<Func<T, string>> expString = ...;
// call orderBy with expString
}
else if (IsInt)
{
Expression<Func<T, int>> expInt;
// call orderBy w/ expInt
}
:
Je veux quelque chose comme:
Expression<Func<T, {something generic!}>> exp;
if (IsString)
exp = ...;
else if (IsInt)
exp = ...;
:
// call orderBy with exp
Cela semble bien. Comment utilisez-vous cette méthode? L'avez-vous ajouté à une classe statique? – BFree