日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NET 现代化动态 LINQ 库 Gridify

發布時間:2023/12/4 asp.net 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .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 最接近。

希望對您有用!

總結

以上是生活随笔為你收集整理的.NET 现代化动态 LINQ 库 Gridify的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。