.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

希望对您有用!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/293897.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

brew mysql 添加修改mysql配置

为什么80%的码农都做不了架构师&#xff1f;>>> brew安装的MySQL是没有默认配置文件的&#xff0c;因此Mysql使用默认配置启动。我们需要手动创建my.cnf去覆盖默认配置。在/usr/local/opt/mysql 下确实有 my.cnf 但是并没有在启用中&#xff0c;应该是作为一个示例…

LINUX BASH SHELL,小小学习一下

注意点要注意的&#xff1a; 整数运算一般通过 let 和 expr 这两个指令来实现&#xff0c;如对变量 x 加 1 可以写作&#xff1a;let "x $x 1" 或者 xexpr $x 1 两个比较表格要记得&#xff1a; 对应的操作 整数操作 字符串操作 相同 -eq 不同 -ne ! 大…

“人肉”背后隐藏的网络风险

“遭此不幸”的演艺界大碗包括 Jay-Z、碧昂斯 (Beyonce)、布兰妮。斯皮尔斯 (Britney Spears) 以及金。卡戴珊 (Kim Kardashian) 等&#xff0c;他们的个人信息被公诸于众。此外&#xff0c;这次泄露事件的受害者甚至包括美国第一夫人米歇尔。奥巴马 (Michelle Obama)、副总统乔…

数学系都是怎么发「新年祝福」的?

全世界只有3.14 % 的人关注了爆炸吧知识过年啦&#xff01;你都收到什么样的祝福&#xff1f;&#xff08;快到留言区留言&#xff09;不过看来看去&#xff0c;还是超模君曾经收到的一条祝福最特别了&#xff01;超模君今天把这份新年祝福分享给大家&#xff1a;长按图片可保存…

NET 6 中新增的LINQ 方法

.NET 6 中添加了许多 LINQ 方法。下表中列出的大多数新方法在 System.Linq.Queryable 类型中具有等效方法。欢迎关注如果你刻意练习某件事情请超过10000小时&#xff0c;那么你就会达到世界级别今晚打老虎TryGetNonEnumeratedCount 尝试在不强制枚举的情况下确定序列中的元素数…

CSV格式数据如何导入MySQL?

经常有客户咨询如何将CSV文件导入到MySQL数据库中&#xff0c;特写此文介绍一种方便、快捷的方法。 我们要使用的辅助工具是著名的MySQL管理软件&#xff1a;Navicat for MySQL 1&#xff09;我准备了一个字符编码为UTF-8的标准CSV文件&#xff0c;总共有2001条记录&#xff08…

史上最让数学家无奈的规定!背后真相让人不敢相信,可是没有人能证明对错.........

全世界只有3.14 % 的人关注了爆炸吧知识负负得正怎么证明&#xff1f;放假了&#xff0c;8岁表妹又来我家打算好好学习。今天聊着聊着&#xff0c;超模君差点被她给绕进去。她&#xff1a;“老师说负负得正&#xff0c;所以&#xff0c;所以所有的负数乘以负数都是正数&#xf…

ios开发备忘录三

为什么80%的码农都做不了架构师&#xff1f;>>> 在配置第三方库EGORefreshTableHeaderView的时候&#xff08;其实就只是一个头文件和一个源文件&#xff0c;还算不上库&#xff09;&#xff0c;可以从头文件发现 #import <QuartzCore/QuartzCore.h> 所以必…

C# 企业微信消息推送对接,实现天气预报推送

准备工作需要获取的东西1. 企业Id,2.应用secret 和 应用ID获取企业id注册完成后&#xff0c;在我的企业》企业信息》最下面企业id获取应用secret 和 应用ID发送微信消息class WeCom{public static string weComCId "ww2b b0bf8";//企业Id①public static string we…

通信协议——HTTP、TCP、UDP

TCP HTTP UDP:都是通信协议&#xff0c;也就是通信时所遵守的规则&#xff0c;只有双方按照这个规则“说话”&#xff0c;对方才能理解或为之服务。TCP HTTP UDP三者的关系:TCP/IP是个协议组&#xff0c;可分为四个层次&#xff1a;网络接口层、网络层、传输层和应用层…

Visual Studio 远程调试正在运行的进程

使用场景当项目在测试环境上有bug&#xff0c;需要运行代码调试一下&#xff0c;这时就需要在测试环境上安装一个调试工具&#xff0c;然后在本地运行代码&#xff0c;远程链接到测试环境服务器来调试代码&#xff1b;&#xff08;假期鸽了这末长的时间&#xff09;方式一&…

直男约会能有多奇葩​?

1 六根烟来了七位领导怎么办&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼2 和36号鞋垫一样大的毛肚&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼3 直男约会能有多奇葩&#xff1f;&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼4 高情商v…

计算机如何实现共享接入,局域网内电脑实现共享设置方法

不同局域网内电脑怎么实现互访实现文件或打印机共享设置?下面由学习啦小编给你做出详细的实现共享设置方法介绍!希望对你有帮助!局域网内电脑实现共享设置方法&#xff1a;一、使用一条网线将两个路由器连接&#xff0c;网线插在路由器的LAN口上;二、两个路由器要设置两个不同…

【另类见解】一致性哈希就能解决分库分表问题了?

“开局一问&#xff1a;分库分表行为中&#xff0c;一致性哈希到底用处大不大&#xff1f;装B脑图现在是大数据的时代&#xff0c;其中一个体现就是数据量非常庞大。当然大数据的概念绝非是数据量就可以定义的&#xff0c;我自己给大数据下的定义是&#xff1a;无处不在的大量数…

pomForSSH

2019独角兽企业重金招聘Python工程师标准>>> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.apache…

WPF 实现展示反应盘、者试剂仓控件

WPF开发者QQ群&#xff1a; 340500857 | 微信群 -> 进入公众号主页 加入组织由于微信群人数太多入群请添加小编微信号&#xff08;yanjinhuawechat&#xff09;或&#xff08;W_Feng_aiQ&#xff09;邀请入群&#xff08;需备注WPF开发者&#xff09;PS&#xff1a;有更好的…