C#通用类型获取最小日期

时间:2016-06-22 09:55:20

标签: c# generics lambda

我有一个带有Generic Type的对象列表(List myGenericList),我知道泛型类型中有一个属性“Date”(类型为DateTime)。

我想得到最短的约会,如下: myGenericList.Min(R => r.Date);

这是我实施的内容,但下面的代码给出了错误:

 - 'List<T>' does not contain a definition for 'Min' and the best
   extension method overload 'Queryable.Min<T, DateTime>(IQueryable<T>,
   Expression<Func<T, DateTime>>)' requires a receiver of type
   'IQueryable<T>' myGenericList

代码:

    internal DateTime GetMinimumDate()
    {
        Expression<Func<T, DateTime>> lambdaExpression = ConstructLambdaExpression();
        return myGenericList.Min(lambdaExpression);
    }

    private Expression<Func<T, DateTime>> ConstructLambdaExpression()
    {
        //construct lambda expression: r => r.Date
        var parameterExpression = Expression.Parameter(typeof(T));
        var propertyOrFieldExpression = Expression.PropertyOrField(parameterExpression, "Date");
        return Expression.Lambda<Func<T, DateTime>>(propertyOrFieldExpression,parameterExpression);

    }

你有什么想法吗? 谢谢!

此致 LEONA

1 个答案:

答案 0 :(得分:1)

Expression<Func<T, DateTime>>更改为Func<T, DateTime>

Min的{​​{1}}功能(实际上List)接受IEnumerable而不是Func。这是你得到的错误。

工作代码:

Expression