草莓恋爱日记,gt国际时时彩,理财周报电子版
using system; using system.linq; using system.linq.expressions; namespace oyang.tool { public static class predicatebuilder { public static expression<func<t, bool>> true<t>() { return f => true; } public static expression<func<t, bool>> false<t>() { return f => false; } public static expression<func<t, bool>> and<t>(this expression<func<t, bool>> expr1, expression<func<t, bool>> expr2) { var invokedexpr = expression.invoke(expr2, expr1.parameters.cast<expression>()); return expression.lambda<func<t, bool>> (expression.andalso(expr1.body, invokedexpr), expr1.parameters); } public static expression<func<t, bool>> or<t>(this expression<func<t, bool>> expr1, expression<func<t, bool>> expr2) { var invokedexpr = expression.invoke(expr2, expr1.parameters.cast<expression>()); return expression.lambda<func<t, bool>> (expression.orelse(expr1.body, invokedexpr), expr1.parameters); } public static expression<func<t, bool>> and<t>(this expression<func<t, bool>> expr1, func<expression<func<t, bool>>> func) { expression<func<t, bool>> expr2 = func(); var invokedexpr = expression.invoke(expr2, expr1.parameters.cast<expression>()); return expression.lambda<func<t, bool>> (expression.andalso(expr1.body, invokedexpr), expr1.parameters); } public static expression<func<t, bool>> or<t>(this expression<func<t, bool>> expr1, func<expression<func<t, bool>>> func) { expression<func<t, bool>> expr2 = func(); var invokedexpr = expression.invoke(expr2, expr1.parameters.cast<expression>()); return expression.lambda<func<t, bool>> (expression.orelse(expr1.body, invokedexpr), expr1.parameters); } } }
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Blazor server side 自家的一些开源的, 实用型项目的进度之 CEF客户端
.NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)
vue+.netcore可支持业务代码扩展的开发框架 VOL.Vue 2.0版本发布
网友评论