tengo un método de extensión, que era una persona muy útil para mí dar ... lo hace un OrdenarPor en IQueryable ... pero yo quería uno para hacer un IQueryable normal (no genérico)IQueryable (no genérico): ¿falta Count and Skip? funciona con IQueryable <T>
Aquí está el código, The count y Skip, y creo que Take está perdido.
public static IQueryable GetPage(this IQueryable query,
int page, int pageSize, out int count)
{
int skip = (int)((page - 1) * pageSize);
count = query.Count(); //COUNT DOESN'T EXIST
return query.Skip(skip).Take((int)pageSize); // NEITHER SKIP
}
Aquí está el y funciona perfectamente sin errores.
public static IQueryable<T> GetPage<T>(this IQueryable<T> query,
int page, int pageSize, out int count)
{
int skip = (int)((page - 1) * pageSize);
count = query.Count();
return query.Skip(skip).Take((int)pageSize);
}
¿Alguna idea de cómo puedo evitar esto? No quiero cambiar mis tipos de devolución ya que funciona perfectamente y tengo otro método de extensión llamado ToDataTable y también funciona en un IQueryable no genérico.
¿Hay un problema?
Gracias de antemano
EDITAR
llamo al igual que en una ya existente IQueryable
IQueryable<Client> gen = null;
IQueryable nongen = null;
var test = gen.GetPage(); //COMPILES!
var test 1 = non.GetPage(); // Doesn't compile because GETPAGE
// for non generic is broken as it has
// invalid methods like COUNT and SKIP etc.
I intentado quitar la versión getPage no genérico, pero entonces mi no IQueryable Genérico doesn' t Recoge la extensión debido a que no es un Iqueryable sino solo un IQueryable
Gracias JOn! Usted declara C# 4.0 - estoy usando 3.5 ... ¿Puedo usar un reflejo estándar en 3.5? ¿Supongo? – Martin
@Martin: Sí. Tendría que obtener el tipo concreto de 'query' y descubrir qué interfaces implementa ... descubra' T' a través de eso, luego use 'MethodInfo.MakeGenericMethod' para llamar' Queryable.Count' etc. Es probable que desordenarse muy rápido –
¡Sí! ah bien voy a pensar ... :-) Gracias por la confirmación. – Martin