我試圖創建一個通用函數,該函數可以接受以下參數。C#將通用類作爲參數傳遞給自定義方法
- 類的類型 - classType所
- 頁碼 - 頁次
- 頁大小 - 的pageSize
- 排序列 - orderByColumn
下面是一個例子我正在嘗試的功能g複製。
public List<T> GetDataPerPage<T>(IList<T> classType, int pageNum, int pageSize, string orderByColumn)
{
if (pageSize <= 0) pageSize = 10; // TODO: Default pageSize for the Moment
if (pageNum <= 0) pageNum = 1;
int excludedRows = (pageNum - 1) * pageSize;
return GetRepo<classType>().All(null).AsQueryable().Where(p => p.IsDeleted == false).OrderBy(p => p.orderByColumn).Skip(excludedRows).Take(pageSize).ToList();
}
我不確定應該如何通過classType所和orderByColumn的功能。
任何幫助將不勝感激。由於
謝謝@Simon Whitehead。我得到的類只能通過在末尾添加T:class **來添加,否則T將返回編譯錯誤。 'Public list GetDataPerPage (Func whereClause,Func orderByClause,int pageNum,int pageSize)其中T:class'。我使用了_Func orderBy_作爲函數中的where子句,因爲它可能會從類更改爲類,但它不接受whereBy子句。 –
這是我從where子句中得到的錯誤''System.Linq.IQueryable'不包含'Where'和最佳擴展方法重載定義'System.Linq.ParallelEnumerable.Where (System.Linq.ParallelQuery ,系統。Func )'有一些無效的參數' –
嗨@SimonWhitehead,我通過傳遞參數作爲'Func' –