我有以下方法:
private List<T> GetEntities<T>(T entity) {
// ...
}
和
public virtual List<T> Find<T>(Predicate<T> match) {
// ...
}
如何获取 lambda 表达式中的值Predicate<T>
?
我想做类似的事情:
var result = Find<MyObject>(o => o.Name == "Something")
在Find
方法中我会:
public virtual List<T> Find<T>(Predicate<T> match) {
// ...
string name = myObj.Name // equals to "Something"
return GetEntities<T>(myObj) //Note that here is my object with the parameters passed via lambda
// ...
}
我怎样才能做到这一点?
编辑:已经有一个接收 MyObject 的方法,我只想要一个可以使用 lambda 表达式的方法,而不需要实例化一个对象来过滤一个实体。不知道我是使用 Func 还是 Predicate
编辑2:根据要求,这是我将实现的具体示例:
目前,当我想检索具有特定过滤器的对象时,我使用:
Person p = new Person() { Name = "John" };
var result = GetEntities<Person>(p);
我喜欢做什么:
var result = Find<Person>(p => p.Name = "John");
但是,内部想继续使用以前的方法,我只是将表达式变成一个对象,然后使用GetEntities<Person>(p)
结论: 我对谓词和 Func 做了很多混淆。我以为我可以将它们视为对象,但它们是表达式,我的问题完全脱离了这些元素的概念。