LINQ学习(八):强制立即执行
说明:我们可以知道所有 LINQ 查询操作都由以下三个不同的操作组成:获取数据源、创建查询、执行查询。执行查询可分为延迟执行和强制立即执行。
强制立即执行:
1.使用聚合函数(Count、Max、Average、First)等强制执行,计算并返回单一实例结果。
2.可通过对查询(立即执行)或查询变量(延迟执行)调用 ToList 或 ToArray 等方法来强制执行查询。
位于System.Linq中的Enumerable类提供一组用于查询实现 IEnumerable<T> 的对象的静态方法。具体方法介绍可查看MSDN。
测试数据:
public class Student { public int NumId{ get; set; } public string Name{ get; set; } public int Score { get; set; } } List<Student> students = new List<Student>{ new Student {NumId=3,Name="Terry", Score=55}, new Student {NumId=1,Name="AI", Score=80}, new Student {NumId=3,Name="Kobe", Score=40}, new Student {NumId=8,Name="James", Score=90}, new Student {NumId=5,Name="Love", Score=60}, new Student {NumId=6,Name="Wade", Score=85}, };
1.使用聚合函数
说明:函数有很多,这里只介绍几个:Count、Max、Average、First。
查询学生的人数:
int count = (from student in students select student.NumId).Count(); Console.WriteLine("学生的人数:{0}", count); //学生的人数:6
查询最高分:
int maxscore = (from student in students select student.Score).Max(); Console.WriteLine("最高分:{0}", maxscore); //最高分:90
查询平均分:
double average = (from student in students select student.Score).Average(); Console.WriteLine("平均分:{0}", average); //平均分:68.3333333333333
返回列表第一个学生姓名:
string Name = (from student in students select student.Name).First(); Console.WriteLine("返回列表第一个学生姓名:{0}", Name); //返回列表第一个学生姓名:Terry
2.生成结果集
说明:只有使用ToList 或 ToArray 等方法来强制转换,才能使变量立即获取结果集。
转换为List集合:
var querylist = (from student in students select student).ToList(); foreach (var student in querylist) { Console.WriteLine("{0} {1} {2}", student.NumId, student.Name, student.Score); //3 Terry 55 //1 AI 80 //3 Kobe 40 //8 James 90 //5 Love 60 //6 Wade 85
//注意:变量querylist已经存储结果集 }
转换为Array数组:
var queryarray = (from student in students select student).ToArray(); foreach (var student in queryarray) { Console.WriteLine("{0} {1} {2}", student.NumId, student.Name, student.Score); //3 Terry 55 //1 AI 80 //3 Kobe 40 //8 James 90 //5 Love 60 //6 Wade 85
//注意:变量queryarray已经存储结果集 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述