我们如何使用谓词< t>范围



如何在实现方法实现时解析内容Predicate<T>参数?例如,我有此方法:

public static List<MyEntity> Find(Predicate<MyEntity> filters)

当我使用此方法时,我将一些谓词(即:filters.Name == "xyz")传递给该方法。我希望能够确定表达式,即能够从中生成SQL。

如您所知,Preidcate<T>代表采用T类型参数并返回bool值的方法。要使用它,只需将其视为一种方法。

这是一个示例:

var entity = <get an entity some where>;
if (filters(entity)) {
    // entity satisfies the predicate
}

从方法的名称和签名来看,您似乎想找到满足谓词的所有实体。也许这样的东西:

var list = new List<Entity>();
foreach (var entity in <get all entities>) {
    if (filters(entity)) {
        list.Add(entity)
    }
}
return list;

我想解释它。

不,您无法解释谓词内部的内容,即代表。代表是黑匣子。代表的呼叫者不需要知道代表实际做什么。如果您真的想知道它的作用,请使用表达式树,但是我认为在这种情况下应该使用Predicate

最新更新