Sim*_*max 3 predicatebuilder linqkit
在我为谓词构建器看到的所有示例中,PredicateBuilder.True如果要构建"和"表达式条件以及PredicateBuilder.False构建"或"表达式条件,它将显示一个起始表达式.
我的问题是,这种情况总是如此,如果是这样的话,为什么不能简单地推断出这一点.我怀疑必定会有一些情况,你正在构建一个"和"表达式,并希望从错误开始.与"或"相反
任何人都可以向我解释这个吗?
在表达式A和B以及C和D中,如果任何条件(A,B,C或D)为False,则整个表达式为False.因此,如果您使用False启动"和"表达式,无论您还是其他任何内容,整个表达式都将为False.
与"或"表达式相同.在表达式A或B或C或D中,如果任何条件(A,B,C或D)为True,则整个表达式为True.因此,如果您使用True启动"或"表达式,无论您还是其他什么,整个表达式都将为True.
至于为什么你需要使用文字True或False启动PredicateBuilder,我相信这只是一个使PredicateBuilder更容易使用的约定.表达式总是以(布尔)条件开头,后跟0或更多"和/或条件"部分.所以你可以有"A",或"A和B",或"A和B和C".你永远不会以"和A"开头.PredicateBuilder的.And(条件)为表达式添加了"和condition",所以你不能从它开始.可能有一个构造函数让你创建你的表达式并以初始条件启动它(新的表达式<...>(A)?我还没有真正检查过......有没有?)但是你会必须以不同于你的第二个和后续条件(调用.And(...)或.Or)来处理你的第一个条件(你可能会循环一些东西并添加到你的表达式)(调用构造函数). ...)).PredicateBuilder的.True <...>()和.False <...>()方法处理创建Expression以及添加第一个(通用)条件,以便您可以处理添加第一个和所有后续条件你的循环相同(通过调用.And(...)或.Or(...)).
| 归档时间: |
|
| 查看次数: |
1691 次 |
| 最近记录: |