Linq to sql 动态查询
辅助类
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Linq.Expressions; 5 using System.Text; 6 using System.Threading.Tasks; 7 8 namespace Drision.Framework.Logic.NYZF 9 { 10 public static class PredicateBuilder 11 { 12 public static Expression<Func<T, bool>> True<T>() { return f => true; } 13 public static Expression<Func<T, bool>> False<T>() { return f => false; } 14 15 public static Expression<Func<T, bool>> Or<T>(this Expression<Func<T, bool>> expr1, 16 Expression<Func<T, bool>> expr2) 17 { 18 var invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast<Expression>()); 19 return Expression.Lambda<Func<T, bool>> 20 (Expression.Or(expr1.Body, invokedExpr), expr1.Parameters); 21 } 22 23 public static Expression<Func<T, bool>> And<T>(this Expression<Func<T, bool>> expr1, 24 Expression<Func<T, bool>> expr2) 25 { 26 var invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast<Expression>()); 27 return Expression.Lambda<Func<T, bool>> 28 (Expression.And(expr1.Body, invokedExpr), expr1.Parameters); 29 } 30 } 31 }
使用方法
1 var predicate = PredicateBuilder.False<T_Operator>(); 2 foreach (var name in typenames) 3 { 4 string tmpname = name; 5 predicate = predicate.Or(o => o.OperatingRange != null && o.OperatingRange.Contains(tmpname)); 6 } 7 operators = operators.AsQueryable().Where(predicate).ToList();
标签:
Linq to sql
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
2012-05-03 JS中URL编码解码