.NET 现代化动态 LINQ 库 Gridify

动态 LINQ


大家好,我是等天黑, 这次继续介绍开源项目,Gridify 是一个现代化动态 LINQ 库,它以最简单的方式将您的字符串转换为 LINQ 查询,并且有出色的性能。它还提供了一种使用基于文本的数据应用过滤、排序和分页的简单方法,您还可以很方便的和 Entity framework 结合使用。

https://alirezanet.github.io/Gridify/

这有什么用呢?LINQ 查询通常是在程序中硬编码的, 而字符串可以来自于数据库,Http 请求等等, 可以在合适的场景中转换成LINQ查询,也就是动态 LINQ。

使用示例

让我们看看下面几个示例。

首先通过 Nuget 安装 Gridify, 然后修改代码如下

public class Program    {        static async Task Main(string[] args)        {            List<Person> people = new List<Person>() {                 new Person(18,"Lee"),                 new Person(18,"James"),                 new Person(30,"Mark")             };         }    }     public class Person    {        public Person(int age, string name)        {            Age = age;            Name = name;        }        public int Age { get; set; }        public string Name { get; set; }     }

先看一个简单的, 此时 p1 和 p2 是相等的

// 字符串var p1 = people.AsQueryable().ApplyFiltering("Age=18").ToList();//等同于 LINQvar p2 = people.Where(x => x.Age==18).ToList();


OR

people.AsQueryable().ApplyFiltering("Name=Lee | Name=Mark").ToList();people.Where(x => x.Name=="Lee"|| x.Name=="Mark").ToList();

AND

people.AsQueryable().ApplyFiltering("Age=18 , Name=James").ToList();people.Where(x => x.Age==18&& x.Name=="James").ToList();

模糊查询

people.AsQueryable().ApplyFiltering("Name=*a").ToList();people.Where(x => x.Name.Contains("a")).ToList();

排序


people.AsQueryable().ApplyOrdering("Age desc,Name desc").ToList();;people.OrderByDescending(x => x.Age).ThenByDescending(x => x.Name).ToList();

性能

Gridify 是实现原理是, 对字符串进行语法解析,然后转换成表达式, 如您所见,Gridify 的结果和原生 linq 最接近。

c1d366482bb01cc9b7bed042ba0f2a89.png

希望对您有用!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值