无法将lambda表达式转换为委托类型(无参考错误)



我在这里看到了几个答案,但这并没有帮助我解决问题。我都使用System.Linq和使用System.Data.Entity(灰色(。我有:

internal virtual GlobalTable GetGlobalTableById(int newTableId)
{
    return UnitOfWork.GlobalTableRepository.Get(
               x => x.NewTableId == newTableId).FirstOrDefault();
}

它要我在我的iglobaltablerepository中创建这个:

object Get(Func<object, object> p);

我在我的iglobaltablerepository中有这个:

GlobalTable Get(int newTableId);

但这只是在此之后造成了另一个问题。我在这里陷入了选择。

这是来自存储库的类:

public GlobalTable Get(int newTableId)
{
    var o = Get(x => x.NewTableId == newTableId).FirstOrDefault();
    return o;
}

问题是方差如何与C#中的代表一起工作。您不能将该lambda用作Func<object, object>,因为它访问了不是object成员的x成员。您需要将lambda表达式的x投射到其特定类型中。

喜欢 x => ((MyType)x).Member == foo

最新更新