使用通用数据类型C#制作Lambda表达式

时间:2018-10-23 16:38:09

标签: c# generics lambda

我需要知道是否有可能有一个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;
        }
    }

如果可能,我该如何处理?这很重要,因为它使我无法针对几种类型的数据重复相同的功能

1 个答案:

答案 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)