vi la siguiente función en un mensaje, que le permite a uno orden de los datos usando una expresión genérica:problema con la función genérica LINQ OrdenarPor
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);
}
Cuando trato de utilizar esta función me sale un error que dice "El tipo o el nombre de espacio de nombres "TKey' no se pudo encontrar (¿falta una directiva using o una referencia de ensamblado?)" estoy haciendo algo tonto aquí, pero no puede averiguarlo
Editar:..
Después de investigar un poco más, creo que mi problema está en construir el Expr Ession que paso en ella. ¿Es posible construir una expresión que puede contener diferentes tipos? Digamos que mi conjunto de datos tiene una cadena, un int y un bool y quiero usar la función genérica anterior para ordenar por cualquiera de los elementos. ¿Cómo hago esto?
Tengo esta trabajando ahora:
if (IsString)
{
Expression<Func<T, string>> expString = ...;
// call orderBy with expString
}
else if (IsInt)
{
Expression<Func<T, int>> expInt;
// call orderBy w/ expInt
}
:
Quiero algo como:
Expression<Func<T, {something generic!}>> exp;
if (IsString)
exp = ...;
else if (IsInt)
exp = ...;
:
// call orderBy with exp
Esto parece estar bien. ¿Cómo estás usando este método? ¿Lo agregaste a una clase estática? – BFree