.NET 6新特性试用 | LINQ功能改进
前言
.NET6為LINQ添加了多個新API,在本文中,我們將始終使用User類逐一演示這些添加到LINQ中的內容:
public?class?User {public?string?Name?{?get;?set;?}public?int?Age?{?get;?set;?} }*By方法
包括下列方法:
DistinctBy: 根據(jù)指定的鍵選擇器從集合返回不同元素的集合
ExceptBy: 根據(jù)指定的鍵選擇器生成兩個集合的集合差集
IntersectBy: 根據(jù)指定的鍵選擇器函數(shù)生成兩個集合的集合交集
UnionBy: 根據(jù)指定的鍵選擇器生成兩個集合的集合并集
MinBy: 根據(jù)指定的鍵選擇器函數(shù)返回集合中的最小值
MaxBy: 根據(jù)指定的鍵選擇器函數(shù)返回集合中的最大值
相對于不帶By的方法,提供了一個鍵選擇器keySelector,允許對值的子集而不是整個值執(zhí)行操作。
例如,取Name最長的User:
var?user?=?users.MaxBy(p?=>?p.Name.Length);Chunk
將集合按照提供的大小分為多個集合。也就是說,返回集合的集合。
例如,將用戶按10人分組:
var?chunks?=?users.Chunk(size:?10); foreach?(var?chunk?in?chunks) {foreach(var?user?in?chunk){Console.WriteLine(user);????} }范圍和索引支持
范圍(..)和索引(^)用于訪問集合中的單個元素或范圍。
現(xiàn)在可以對ElementAt方法使用索引重載,對Take方法使用范圍重載。
示例代碼如下:
var?lastUser?=?users.ElementAt(^1);//取最后一個Uservar?users1To4?=?users.Take(1..5);//取索引1到4的User*OrDefault defaultValue參數(shù)
FirstOrDefault, LastOrDefault和SingleOrDefault方法當未找到集合元素時將返回default(T)。
但在某些場合是不合適的。比如需要始終返回一個User實例,避免空引用,這時可以傳遞defaultValue參數(shù)進行指定:
static?readonly?User?EmptyUser?=?new?User?{?Name?=?""?};var?user?=?users.FirstOrDefault(p=>p.Age>30,??EmptyUser); Console.WriteLine(user.Name);結論
雖然這些改進都很小,沒有從根本上改變使用LINQ的方式,但每一項確實都能幫助解決實際項目中的需要。
如果你覺得這篇文章對你有所啟發(fā),請關注我的個人公眾號”My IO“
總結
以上是生活随笔為你收集整理的.NET 6新特性试用 | LINQ功能改进的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 磨刀不误砍柴工—Exceptionles
- 下一篇: Typora 开始收费, 不妨试试这个开