我需要知道是否有可能有一个lambda表达式来接收对象的通用datetype,这样我可以使用字符串,int或datetime进行排序,实际上我有:
public virtual IEnumerable<T> GetMany(Expression<Func<T,int>> id, int page, int qty)
{
try
{
int skip_ = PaginationMetering(page, qty);
return dbSet.OrderBy(id).Skip(skip_).Take(qty).ToList();
}
catch (Exception e)
{
throw e.InnerException ?? e;
}
}
我已经尝试过了,但是我的问题是执行函数时我无法进行数据类型转换:
public virtual IEnumerable<T> GetMany(Expression<Func<T,dynamic>> id, int page, int qty)
{
try
{
int skip_ = PaginationMetering(page, qty);
return dbSet.OrderBy(id).Skip(skip_).Take(qty).ToList();
}
catch (Exception e)
{
throw e.InnerException ?? e;
}
}
如果可能,我该如何处理?这很重要,因为它使我无法针对几种类型的数据重复相同的功能
答案 0 :(得分:0)
我不知道您的OrderBy来自哪里,但是对您自己的方法使用相同的签名。 例如:
public static IOrderedQueryable<TSource> OrderBy<TSource, TKey>(this IQueryable<TSource> source, Expression<Func<TSource, TKey>> keySelector);
以您的示例为例:
public virtual IEnumerable<TSource> GetMany<TSource, TKey>(Expression<Func<TSource, TKey>> id, int page, int qty)