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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#中利用Linq.Dynamic实现简单的动态表达式构建查询

發布時間:2025/3/11 C# 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#中利用Linq.Dynamic实现简单的动态表达式构建查询 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景介紹

在ADO.NET中我們可以根據用戶輸入的查詢條件拼接出指定的SQL語句進行查詢或者篩選出所需的數據,但是在ORM框架如EF中,我們一般用LINQ操作數據查詢,LINQ是否可以像SQL一樣拼接查詢條件呢?答案是可以的。這一技術叫Linq.Dynamic(動態Linq),Linq.Dynamic的出現解決了本人心中的疑惑,不然總感覺少了什么。不管怎么樣,我們首先要做的是去網上找各種大神的資料,本文參考如下幾篇資料:

Linq.Dynamic基本介紹1:https://www.cnblogs.com/myzony/p/9143692.html

Linq.Dynamic基本介紹2:https://blog.csdn.net/flyingdream123/article/details/79962525

另外Linq.Dynamic是由外國大神所創,源碼在其個人主頁上也有:源碼地址

首先,需要在NuGet程序包中引入Linq.Dynamic.Core并引用其命名空間才能使用。

其次,使用動態查詢必須先調用AsQueryable()方法。

static void Main(string[] args){List<Phone> PhoneLists = new List<Phone>(){new Phone { Country = "中國", City = "北京", Name = "小米" },new Phone { Country = "中國",City = "北京",Name = "華為"},new Phone { Country = "中國",City = "北京",Name = "聯想"},new Phone { Country = "中國",City = "臺北",Name = "魅族"},new Phone { Country = "日本",City = "東京",Name = "索尼"},new Phone { Country = "日本",City = "大阪",Name = "夏普"},new Phone { Country = "日本",City = "東京",Name = "松下"},new Phone { Country = "美國",City = "加州",Name = "蘋果"},new Phone { Country = "美國",City = "華盛頓",Name = "三星"},new Phone { Country = "美國",City = "華盛頓",Name = "HTC"}};var Lists = PhoneLists.AsQueryable().Where("Country = @0 And City = @1", "中國", "北京").OrderBy("Name,City").Select("new (Country as Country,City as City,Name as Name)");var dLists = Lists.ToDynamicList();foreach (var list in dLists){Console.WriteLine(list.Country + "-" + list.City + "-" + list.Name);}Console.Read();}

運行效果如下圖所示:

?

當然也支持GroupBy()查詢,代碼如下:

static void Main(string[] args){List<Phone> PhoneLists = new List<Phone>(){new Phone { Country = "中國", City = "北京", Name = "小米" },new Phone { Country = "中國",City = "北京",Name = "華為"},new Phone { Country = "中國",City = "北京",Name = "聯想"},new Phone { Country = "中國",City = "臺北",Name = "魅族"},new Phone { Country = "日本",City = "東京",Name = "索尼"},new Phone { Country = "日本",City = "大阪",Name = "夏普"},new Phone { Country = "日本",City = "東京",Name = "松下"},new Phone { Country = "美國",City = "加州",Name = "蘋果"},new Phone { Country = "美國",City = "華盛頓",Name = "三星"},new Phone { Country = "美國",City = "華盛頓",Name = "HTC"}};var Lists = PhoneLists.AsQueryable().GroupBy("new (Country as Country,City as City)");var dLists = Lists.ToDynamicList();foreach (var list in dLists){Console.WriteLine(list + ":");foreach (var lis in list){Console.WriteLine(lis.Country + "-" + lis.City + "-" + lis.Name);Console.WriteLine($"{lis.Country} - {lis.City} - {lis.Name}");}}Console.Read();}

執行效果如下圖所示:

希望對大家有所幫助!

?

總結

以上是生活随笔為你收集整理的C#中利用Linq.Dynamic实现简单的动态表达式构建查询的全部內容,希望文章能夠幫你解決所遇到的問題。

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