我在这里看到了几个答案,但这并没有帮助我解决问题。我都使用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