i eine Verlängerung Methode haben, die eine Person war wirklich hilfreich, um zu mir ... es tut ein orderby auf IQueryable ... aber ich wollte man ein normales IQueryable (nicht generisch)IQueryable (nicht generisch): fehlende Anzahl und Überspringen? es funktioniert mit IQueryable <T>
zu tun Hier ist der Code, Der Count und Skip und ich denke Take fehlen.
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
}
Hier ist das und es funktioniert einwandfrei keine Fehler.
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);
}
Irgendwelche Ideen, wie ich das umgehen kann? Ich möchte meine Rückgabetypen nicht ändern, da es perfekt funktioniert, und ich habe eine andere Erweiterungsmethode namens ToDataTable und es funktioniert auch auf einem nicht generischen IQueryable.
Gibt es eine Arbeit um?
Vielen Dank im Voraus
EDIT
Ich nenne es wie so auf einer vorhandenen 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.
Ich versuchte, die GetPage nicht generische Version zu entfernen, aber dann ‚mein nicht Generisches IQueryable doesn t Abholung der Erweiterung aufgrund der Tatsache, es ist kein Iqueryable aber nur ein IQeryable
Danke JOn! Sie sagen C# 4.0 - ich benutze 3.5 .. So kann ich eine Standard-Reflexion in 3.5 verwenden ?? ich nehme an? – Martin
@Martin: Ja. Sie müssten den konkreten Typ von "query" ermitteln und herausfinden, welche Interfaces es implementiert ... finden Sie heraus, 'T' über das, dann' MethodInfo.MakeGenericMethod' zu nennen 'Queryable.Count' usw. Es ist wahrscheinlich sehr schnell chaotisch werden. –
Ja !! Na gut, denke mal ... :-) Danke für die Bestätigung. – Martin