C# 无法将lambda表达式转换为委托类型(无引用错误)

C# 无法将lambda表达式转换为委托类型(无引用错误),c#,C#,我在这里看到了一些答案,但这并没有帮助我解决问题。我既使用System.Linq,也使用System.Data.Entity(灰显)。我有: 它希望我在我的IGlobalTableRepository中创建以下内容: object Get(Func<object, object> p); GlobalTable Get(int newTableId); public GlobalTable Get(int newTableId) { var o = Get(x =>

我在这里看到了一些答案,但这并没有帮助我解决问题。我既使用System.Linq,也使用System.Data.Entity(灰显)。我有:

它希望我在我的IGlobalTableRepository中创建以下内容:

object Get(Func<object, object> p);
GlobalTable Get(int newTableId);
public GlobalTable Get(int newTableId)
{
    var o = Get(x => x.NewTableId == newTableId).FirstOrDefault();
    return o;
}
但这只会在事后产生另一个问题。我被困在这里的选择

以下是存储库中的一个类:

object Get(Func<object, object> p);
GlobalTable Get(int newTableId);
public GlobalTable Get(int newTableId)
{
    var o = Get(x => x.NewTableId == newTableId).FirstOrDefault();
    return o;
}

问题在于C#中的差异如何与代理一起工作。不能将该lambda用作
Func
,因为它访问的
x
的成员不是
对象的成员。您需要将lambda表达式的
x
强制转换为其特定类型


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

您应该调用
IGlobalTableRepository
的Get方法,并将
newTableId
传递给它。为什么,你不能这样做?你收到的错误是什么?是否要将
Get
转换为
Func
?不,错误是无法将lambda表达式转换为类型“int”,因为它不是委托type@Keith发布一个
GlobalTableRepository
classe将委托类型
Func
传递给一个接受
int
的方法。应该是
returnunitOfWork.GlobalTableRepository.Get(newTableId.FirstOrDefault()Int不定义NewTableId。这是什么类?您需要强制转换x而不是结果公共部分类GlobalTableService:ServerBase,IGlobalTableService