NET 6 中新增的LINQ 方法
NET 6 中新增的LINQ 方法
微软太给力了NET5 LINQ很多功能点还没用到NET6 LINQ 新功能就到来了 而且 NET6 有些功能确实很贴切列如:
Chunk
TryGetNonEnumeratedCount
Zip
ElementAt
MaxBy
MinBy
DistinctBy
ExceptBy
IntersectBy
UnionBy
FirstOrDefault
LastOrDefault
SingleOrDefault
Take
Chunk 该方法将序列的元素拆分为指定大小的区块
st<string> names = new List<string>() {"凤年", "陆丞燕", "呵呵", "姜泥", "南宫仆射", "王初冬", "红薯", "裴南苇" };
var newNames=names.Chunk(3);
foreach (var name in newNames)
{
Console.WriteLine(String.Join(",",name));
}
Console.ReadKey();
TryGetNonEnumeratedCount 该方法尝试在不强制枚举的情况下获取可枚举的源的计数
List<string> names = new List<string>() {"凤年", "陆丞燕", "呵呵", "姜泥", "南宫仆射", "王初冬", "红薯", "裴南苇" };
int num = 0;
names.TryGetNonEnumeratedCount(out num);
Console.WriteLine(num);
Console.ReadKey();
Zip该方法将两个数组进行整合成为一个 ValueTuple<T,SecondT>数组
List<string> names1 = new List<string>() { "凤年", "陆丞燕", "姜泥", "南宫仆射" };
List<string> names2 = new List<string>() { "红薯","王初冬", "呵呵", "裴南苇" };
var names=names1.Zip(names2);
Console.WriteLine(String.Join(",", names));
Console.ReadKey();
ElementAt 该方法返回元素指定索引或者结束的索引
List<string> names = new List<string>() {"凤年", "陆丞燕", "呵呵", "姜泥", "南宫仆射", "王初冬", "红薯", "裴南苇" };
var index1=names.ElementAt(3);
var index2=names.ElementAt(^3);
Console.WriteLine(index1);
Console.WriteLine(index2);
Console.ReadKey();
MaxBy 该方法放回数组或是列表中的最大值
List<int> numbers = new List<int>() { 100,99,5, 4, 1, 3, 9, 8, 6, 7, 12, 10 };
var maxnum= numbers.MaxBy(x => x);
Console.WriteLine(result);
Console.ReadKey();
MinBy该方法放回数组或是列表中的最小值
List<int> numbers = new List<int>() { 100, 99, 5, 4, 1, 3, 9, 8, 6, 7, 12, 10 };
var result = numbers.MinBy(x => x);
Console.WriteLine(result);
Console.ReadKey();
DistinctBy该方法根据某元素去重(可以自定义元素属性去重)
List<string> names = new List<string>() { "凤年", "陆丞燕", "呵呵", "姜泥", "南宫仆射", "王初冬", "红薯", "裴南苇", "凤年", "陆丞燕", "呵呵", "姜泥", "南宫仆射", "王初冬", "红薯", "裴南苇" };
var result = names.DistinctBy(x => x);
Console.WriteLine(String.Join(",",result));
Console.ReadKey();
ExceptBy该方法返回 两个序列的元素的集合差值的序列
List<string> names1 = new List<string>() { "凤年", "陆丞燕", "呵呵", "姜泥", "红薯" };
List<string> names2 = new List<string>() { "凤年", "陆丞燕", "姜泥", "南宫仆射", "王初冬", "红薯", "裴南苇" };
List<string> names3 = new List<string>();
var names = names2.ExceptBy(names1, names1 => names1);
Console.WriteLine(names);
IntersectBy 该方法返回两个序列元素 得交集
List<string> names1 = new List<string>() { "凤年", "陆丞燕", "呵呵", "姜泥", "红薯" };
List<string> names2 = new List<string>() { "凤年", "陆丞燕", "姜泥", "南宫仆射", "王初冬", "红薯", "裴南苇" };
List<string> names3 = new List<string>();
var names = names2.IntersectBy(names1, names1 => names1);
Console.WriteLine(String.Join(" ", names));
UnionBy该方法连接不同集合,过滤某元素相同项
List<string> names1 = new List<string>() { "凤年", "陆丞燕", "呵呵", "姜泥", "红薯" };
List<string> names2 = new List<string>() { "凤年", "陆丞燕", "姜泥", "南宫仆射", "王初冬", "红薯", "裴南苇" };
List<string> names3 = new List<string>();
var names = names2.UnionBy(names1, names1 => names1);
Console.WriteLine(String.Join(" ", names));
FirstOrDefault该方法返回序列中满足条件的第一个元素;如果未找到这样的元素,则返回默认值
List<string> names = new List<string>() { "凤年", "陆丞燕", "呵呵", "姜泥", "南宫仆射", "王初冬", "红薯", "裴南苇" };
var result=names.FirstOrDefault(x=>x.Contains("人屠"),"凤年");
Console.WriteLine(result);
LastOrDefault该方法返回序列中的最后一个元素;如果未找到该元素,则返回默认值
List<string> names = new List<string>() { "凤年", "陆丞燕", "呵呵", "姜泥", "南宫仆射", "王初冬", "红薯", "裴南苇" };
var result = names.LastOrDefault(x => x.Contains("人屠"), "呵呵");
Console.WriteLine(result);
SingleOrDefault 该方法返回序列中的唯一元素;如果该序列为空,则返回默认值;如果该序列包含多个元素,此方法将引发异常。
string[] strName = { "凤年" };
string[] strNameEmpty = { };
string[] strEmpty = { "凤年", "姜泥" };
try
{
string tempName = strName.SingleOrDefault();
Console.WriteLine("SingleOrDefault()第一种 返回序列中的唯一记录。");
Console.WriteLine("信息为:{0}", tempName);
string tempNameEmpty = strNameEmpty.SingleOrDefault();
Console.WriteLine("SingleOrDefault()第二种 如果该序列为空,则返回默认值。");
Console.WriteLine("信息为:{0}", tempNameEmpty);
string tempEmpty = strEmpty.SingleOrDefault();
}
catch (Exception ex)
{
Console.WriteLine("SingleOrDefault()第三种 如果该序列包含多个元素,则引发异常。");
Console.WriteLine("信息为:{0}", ex.Message);
}
Take 该方法 从序列的开头返回指定数量的相邻元素
List<string> names = new List<string>() { "凤年", "陆丞燕", "呵呵", "姜泥", "南宫仆射", "王初冬", "红薯", "裴南苇" };
var result = names.Take(3);
Console.WriteLine(String.Join(",",result.ToList()));
Console.ReadKey();
#总结 以上就是NET6 更新的常用方法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本