.NET 9 中 LINQ 新增功能實(shí)現(xiàn)過(guò)程
LINQ 介紹
語(yǔ)言集成查詢 (LINQ) 是一系列直接將查詢功能集成到 C# 語(yǔ)言的技術(shù)統(tǒng)稱。 數(shù)據(jù)查詢歷來(lái)都表示為簡(jiǎn)單的字符串,沒(méi)有編譯時(shí)類型檢查或 IntelliSense 支持。 此外,需要針對(duì)每種類型的數(shù)據(jù)源了解不同的查詢語(yǔ)言:SQL 數(shù)據(jù)庫(kù)、XML 文檔、各種 Web 服務(wù)等。 借助 LINQ,查詢成為了最高級(jí)的語(yǔ)言構(gòu)造,就像類、方法和事件一樣。
.NET 9 環(huán)境準(zhǔn)備
需要體驗(yàn) .NET 9 中 LINQ 的新增功能前提是需要安裝 .NET 9 環(huán)境,安裝 .NET 9 SDK 并且Visual Studio 2022需要更新至17.12版本。
- 下載.NET 9.0:https://dotnet.microsoft.com/zh-cn/download/dotnet/9.0
CountBy方法
CountBy這個(gè)方法允許開(kāi)發(fā)者按鍵來(lái)聚合集合中的元素,并計(jì)算每個(gè)鍵的出現(xiàn)次數(shù)。這使得計(jì)算某個(gè)數(shù)據(jù)集中特定元素的頻率變得非常簡(jiǎn)單。
public static void CountByExample() { var sourceText = "This is a test text. This is only a test. This is the best. This,This,This"; // 統(tǒng)計(jì)每個(gè)單詞出現(xiàn)的次數(shù) KeyValuePair<string, int> mostFrequentWord = sourceText .Split([' ', '.', ','], StringSplitOptions.RemoveEmptyEntries) .Select(word => word.ToLowerInvariant()) .CountBy(word => word) .MaxBy(pair => pair.Value); Console.WriteLine($"最常見(jiàn)的詞是:'{mostFrequentWord.Key}' 出現(xiàn)次數(shù): {mostFrequentWord.Value}"); }
輸出結(jié)果:
AggregateBy方法
AggregateBy這個(gè)方法提供了更強(qiáng)大的聚合功能,開(kāi)發(fā)者可以定義一個(gè)聚合邏輯(如求和、平均值等),并按鍵進(jìn)行聚合。該方法在需要基于鍵對(duì)集合中的元素進(jìn)行復(fù)雜計(jì)算時(shí)非常有用。
public static void AggregateByExample() { (string id, int score)[] data = [ ("0", 88), ("1", 5), ("2", 4), ("1", 10), ("6", 5), ("4", 10), ("6", 25)]; // aggregatedData 是一個(gè)序列,包含按姓名分組并計(jì)算總分的元素 var aggregatedData = data.AggregateBy( keySelector: entry => entry.id, seed: 0, (totalScore, curr) => totalScore + curr.score ); foreach (var item in aggregatedData) { Console.WriteLine(item); } }
輸出結(jié)果:
Index<TSource>(IEnumerable<TSource>)
方法
借助 Index<TSource>(IEnumerable<TSource>)
,可以快速提取可枚舉項(xiàng)的隱式索引。 現(xiàn)在,可以編寫代碼(如以下代碼片段)來(lái)自動(dòng)為集合中的項(xiàng)編制索引。
public static void IndexExample() { var lines = new List<string> { "First line", "Second line", "Third line" }; foreach (var (index, line) in lines.Index()) { Console.WriteLine($"Line {index + 1}: {line}"); } }
輸出結(jié)果:
參考文章
https://learn.microsoft.com/zh-cn/dotnet/core/whats-new/dotnet-9/overview#linq
到此這篇關(guān)于.NET 9 中 LINQ 新增功能實(shí)操的文章就介紹到這了,更多相關(guān).NET 9 LINQ內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- asp.net使用LINQ to SQL連接數(shù)據(jù)庫(kù)及SQL操作語(yǔ)句用法分析
- asp.net中一個(gè)linq分頁(yè)實(shí)現(xiàn)代碼
- asp.net中通過(guò)ALinq讓Mysql操作變得如此簡(jiǎn)單
- asp.net 根據(jù)漢字的拼音首字母搜索數(shù)據(jù)庫(kù)(附 LINQ 調(diào)用方法)
- asp.net Linq to Xml學(xué)習(xí)筆記
- asp.net LINQ中數(shù)據(jù)庫(kù)連接字符串的問(wèn)題
- asp.net Linq TO Sql 分頁(yè)方法
- asp.net Linq To Xml上手Descendants、Elements遍歷節(jié)點(diǎn)
相關(guān)文章
設(shè)置默認(rèn)Ajax操作cache and error
設(shè)置默認(rèn)Ajax操作cache and error,需要的朋友可以參考一下2013-02-02深入本機(jī)影像生成器(Ngen.exe)工具使用方法詳解
本篇文章是對(duì)本機(jī)影像生成器(Ngen.exe)工具使用方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05asp.net中通過(guò)ALinq讓Mysql操作變得如此簡(jiǎn)單
當(dāng)大家已經(jīng)習(xí)慣了使用.net 去操作SQL Server,有多少人曾經(jīng)嘗試過(guò)使用.net 去操作Mysql數(shù)據(jù)庫(kù)!在.net 的光環(huán)下,Mysql是顯得如此微不足道!但是Mysql的開(kāi)源又是如此具有誘惑。2011-07-07Asp.net 時(shí)間操作基類(支持短日期,長(zhǎng)日期,時(shí)間差)
支持短日期,長(zhǎng)日期,時(shí)間差的操作基類,方便大家直接使用2008-11-11詳解c# .net core 下的網(wǎng)絡(luò)請(qǐng)求
本篇文章主要介紹了詳解c# .net core 下的網(wǎng)絡(luò)請(qǐng)求,大致介紹下在.net core 下如何進(jìn)行http請(qǐng)求,主要仍然是GET和POST方法,有興趣的可以了解下2017-05-05js獲取.aspx頁(yè)面里面的服務(wù)器控件和.ascx中的服務(wù)器控件值
用js獲取.ascx控件中服務(wù)器控件值時(shí)首先要得到服務(wù)器控件的ClientID再加上.ascx頁(yè)面里面的服務(wù)器空間ID并用"_"連接2009-02-02