C# 为LINQ2SQL创建带反射的lambda表达式

C# 为LINQ2SQL创建带反射的lambda表达式,c#,linq-to-sql,lambda,expression,C#,Linq To Sql,Lambda,Expression,我有这门课 class abstract EntityBase { public abstract int Id {get; set; } } 现在,我对linq2sql为用户表生成的类做了一点修改(为Id设置覆盖) 然后,我有另一个具有此函数的模板帮助器类 public static T SingleOrDefault(System.Linq.Expressions.Expression<Func<T, bool>> func) { System.Da

我有这门课

class abstract EntityBase
{
    public abstract int Id {get; set; }
}
现在,我对linq2sql为用户表生成的类做了一点修改(为Id设置覆盖)

然后,我有另一个具有此函数的模板帮助器类

public static T SingleOrDefault(System.Linq.Expressions.Expression<Func<T, bool>> func)
{
    System.Data.Linq.DataContext oDataContext = null;
    T retData = GetAll(out oDataContext).SingleOrDefault(func);
    if (retData != null)
    {
        retData.CurrentDataContext = oDataContext;
    }
    return retData;
}
public static T SingleOrDefault(System.Linq.Expressions.Expression func)
{
System.Data.Linq.DataContext oDataContext=null;
T retData=GetAll(out-oDataContext).SingleOrDefault(func);
if(retData!=null)
{
retData.CurrentDataContext=oDataContext;
}
返回数据;
}
我是这样用的

Helper<EntityBase>.SingleOrDefault(t => t.Id == 3);
Helper.SingleOrDefault(t=>t.Id==3);
我得到:Class memberEntityBase`2.Id未映射。问题是它使用的是EntityBase而不是User类的Id,所以我的问题是如何为此构造相应的lambda表达式,以便它可以引用User类的Id。 希望我是清楚的


谢谢。

首先,您肯定需要致电
Helper.SingleOrDefault
。你为什么不能这么做?
Helper<EntityBase>.SingleOrDefault(t => t.Id == 3);