作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个可以接受以下参数的通用函数。
下面是我尝试复制的函数示例。
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 传递给函数。
如有任何帮助,我们将不胜感激。谢谢
最佳答案
您不需要传递 classType
参数,因为您将声明类型 T
当你使用 GetDataPerPage<T>()
方法,因此将其更改为:
public List<T> GetDataPerPage<T>(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<T>().All(null)
.AsQueryable()
.Where(p => p.IsDeleted == false)
.OrderBy(p => p.orderByColumn)
.Skip(excludedRows)
.Take(pageSize)
.ToList();
}
至于orderByColumn
参数,如果你打算像你的例子一样做一个比较,然后传入一个 string
很好,但是如果你想控制比较逻辑使用 string
类型属性 T
,然后像这样传递一个委托(delegate):
public List<T> GetDataPerPage<T>(int pageNum, int pageSize, Func<T, string> orderBy)
{
if (pageSize <= 0) pageSize = 10; // TODO: Default pageSize for the Moment
if (pageNum <= 0) pageNum = 1;
int excludedRows = (pageNum - 1) * pageSize;
return GetRepo<T>().All(null)
.AsQueryable()
.Where(p => p.IsDeleted == false)
.OrderBy(orderBy)
.Skip(excludedRows)
.Take(pageSize)
.ToList();
}
用法:
var list = GetDataPerPage<T>(pageNum, pageSize, p => p.Property1);
关于C# 将泛型类作为参数传递给自定义方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20534768/
我是一名优秀的程序员,十分优秀!