参数化linq select()表达式

时间:2014-03-31 14:01:36

标签: c# visual-studio-2010 linq

这不会起作用:

Func<DAL.Activity, DateTime> f = 
    activity => activity.S_vrijeme;

using (var ctx = new GMDB())
{
    var timestamp =
        ctx
            .Set<DAL.Activity>()
            .Select<T, DateTime>(f)
            .Max();

    return timestamp;
}

......我不知道为什么。

Visual Studio输出这些错误,我无法找到解决方法:

cannot convert from 'System.Func<GM.DAL.Activity,System.DateTime>' to 'System.Func<T,int,System.DateTime>'

Instance argument: cannot convert from 'System.Data.Entity.DbSet<GM.DAL.Activity>' to 'System.Linq.ParallelQuery<T>'

'System.Data.Entity.DbSet<GM.DAL.Activity>' does not contain a definition for 'Select' and the best extension method overload 'System.Linq.ParallelEnumerable.Select<TSource,TResult>(System.Linq.ParallelQuery<TSource>, System.Func<TSource,int,TResult>)' has some invalid arguments

噢,顺便说一句,你们谷歌搜索给了我一些废话。可能我不知道如何搜索这些基于表达式的东西,因为我是新手。

1 个答案:

答案 0 :(得分:4)

我认为你在这里传递了错误的泛型类型。这应该有效:

var timestamp = ctx.Set<DAL.Activity>().Select(f).Max();