我有一個擴展方法,其中一人是真正有用的給我......它在IQueryable的一個排序依據......但我想一個做一個正常的IQueryable(非通用)IQueryable(非泛型):缺少Count和Skip?它的工作原理與IQueryable的<T>
這裏是代碼,計數和跳過,我認爲失去了。
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
}
這是和它工作完全沒有錯誤。
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);
}
任何想法如何解決這個問題?我不想改變我的返回類型,因爲它完美的工作,我有另一種擴展方法稱爲ToDataTable,它也在非通用IQueryable上的功能..
有沒有解決辦法?
在此先感謝
編輯
我把它像這樣在現有的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.
我試圖消除GETPAGE非通用版本,但後來我非泛型IQueryable沒有按」因爲它不是Iqueryable,而只是IQueryable,所以不能接受延長
謝謝JOn!你聲明c#4.0 - 我使用3.5 ..所以我可以在3.5中使用標準反射?我相信? – Martin 2010-11-26 13:26:11