linq拼接where语句_.NET:使用 LinqSharp 动态构建 LINQ 查询

86b965d33501e4d0a6a94270dcf27fee.png

LinqSharp 是个开源 LINQ 扩展库,它允许您编写简单代码来生成复杂查询,包括查询扩展和动态查询生成。

LinqSharp.EFCore 是对 EntityFramework 的增强库,提供更多数据注解、数据库函数及自定义储存规则等。

LinqSharp:为 LINQ 提供更多通用扩展​github.com

由于内容较多,将分篇介绍公开内容、原理及案例分享:

  1. LinqSharp:简化复杂查询
  2. LinqSharp:动态构建 LINQ 查询
  3. LinqSharp.EFCore:表设计数据注解
  4. LinqSharp.EFCore:字段标准化数据注解
  5. LinqSharp.EFCore:函数映射
  6. LinqSharp.EFCore:列式存储代理
  7. LinqSharp.EFCore:关联计算与审计

动态 LINQ

虽然 LINQ 已经可以适应多数的查询情景,但是我们依然需要动态 LINQ 来支持更多的查询场景。

例如,下面这个例子:

  1. 案例需要接受输入的 不定组数 的数据,每组数据为 (TitleOfCourtesyCity);
  2. 查询 Employees 表中 TitleOfCourtesyCity 匹配输入数据的记录。

假设输入数据:

var searches = new[] {
     ("Mr.", "London"), ("Ms.", "Seattle") };

如果是 定量 数据,我们很容易写出静态 LINQ

var query = sqlite.Employees.Where(x =>
    (x.TitleOfCourtesy == "Mr." && x.City == "London")
    || (x.TitleOfCourtesy == "Ms." && x.City == "Seattle"));

如果是 不定量 数据,那么就需要按以下逻辑进行

  1. 使用 for / foreach 为每组数据创建查询子条件;
  2. 把所有查询子条件使用 and / or 连接起来进行查询。

这样我们就需要使用 动态LINQ 查询。

静态查询拆分

XWhereLinqSharp 提供的动态查询方法。

首先了解如何将静态查询表达式拆分为动态查询。例如,

var query &
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值