.NET 现代化动态 LINQ 库 Gridify
2023-04-18 15:55:23 时间
动态 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();
//等同于 LINQ
var 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 最接近。
希望对您有用!
相关文章
- 开源自己编写的半人工标注平台PaddleOCRLabel(.NET Winform版本)
- 还在死磕Ajax,不如看看Fetch ?
- 【ASP.NET Core】动态映射MVC路由
- 【ASP.NET Core】用配置文件来设置授权角色
- 【ASP.NET Core】按用户等级授权
- 【ASP.NET Core】自定义Session的存储方式
- 【ASP.NET Core】选项类的依赖注入
- 【ASP.NET Core】选项模式的相关接口
- 【ASP.NET Core】模型绑定:重命名绑定字段
- 【ASP.NET Core】配置应用程序地址的N多种方法
- 【ASP.NET Core】自己编程来生成自签名的服务器证书
- 【ASP.NET Core】设置 Web API 响应数据的格式——FormatFilter特性篇
- 【ASP.NET Core】设置Web API 响应的数据格式——Produces 特性篇
- 【ASP.NET Core】使用最熟悉的Session验证方案
- 【.NET 与树莓派】WS28XX 灯带的颜色渐变动画
- 【.NET 与树莓派】控制彩色灯带(WS28XX)
- 【.NET 与树莓派】MPD 的 Mini-API 封装
- 【ASP.NET Core】体验一下 Mini Web API
- 【.NET 与树莓派】用 MPD 制作数字音乐播放器
- 【.NET 与树莓派】气压传感器——BMP180