<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
SelectMany操作符提供了將多個from子句組合起來的功能,相當於資料庫中的多表連線查詢,它將每個物件的結果合併成單個序列。
範例:
student類:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SelectMany操作符 { /// <summary> /// 學生類 /// </summary> public class Student { //姓名 public string Name { get; set; } //成績 public int Score { get; set; } //建構函式 public Student(string name, int score) { this.Name = name; this.Score = score; } } }
teacher類:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SelectMany操作符 { /// <summary> /// Teacher類 /// </summary> public class Teacher { //姓名 public string Name { get; set; } //學生集合 public List<Student> Students { get; set; } public Teacher(string name, List<Student> students) { this.Name = name; this.Students = students; } } }
Program類
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SelectMany操作符 { class Program { static void Main(string[] args) { //使用集合初始化器初始化Teacher集合 List<Teacher> teachers = new List<Teacher> { new Teacher("徐老師", new List<Student>(){ new Student("宋江",80), new Student("盧俊義",95), new Student("朱武",45) } ), new Teacher("姜老師", new List<Student>(){ new Student("林沖",90), new Student("花榮",85), new Student("柴進",58) } ), new Teacher("樊老師", new List<Student>(){ new Student("關勝",100), new Student("阮小七",70), new Student("時遷",30) } ) }; //問題:查詢Score小於60的學生 //方法1:迴圈遍歷、會有效能的損失 foreach (Teacher t in teachers) { foreach (Student s in t.Students) { if (s.Score < 60) { Console.WriteLine("姓名:" + s.Name + ",成績:"+s.Score); } } } //查詢表示式 //方法2:使用SelectMany 延遲載入:在不需要資料的時候,就不執行呼叫資料,能減輕程式和資料庫的互動,可以提供程式的效能,執行迴圈的時候才去存取資料庫取資料 //直接返回學生的資料 var query = from t in teachers from s in t.Students where s.Score < 60 select s; foreach (var item in query) { Console.WriteLine("姓名:" + item.Name + ",成績:"+item.Score); } //只返回老師的資料 var query1 = from t in teachers from s in t.Students where s.Score < 60 select new { t, teacherName=t.Name, student=t.Students.Where(p=>p.Score<60).ToList() }; foreach (var item in query1) { Console.WriteLine("老師姓名:" + item.teacherName + ",學生姓名:" +item.student.FirstOrDefault().Name+ ",成績:" + item.student.FirstOrDefault().Score); } // 使用匿名類 返回老師和學生的資料 var query2 = from t in teachers from s in t.Students where s.Score < 60 select new { teacherName=t.Name, studentName=s.Name,studentScore=s.Score }; foreach (var item in query2) { Console.WriteLine("老師姓名:" + item.teacherName + ",學生姓名:" + item.studentName + ",成績:" + item.studentScore); } //使用查詢方法 var query3 = teachers.SelectMany(p => p.Students.Where(t=>t.Score<60).ToList()); foreach (var item in query3) { Console.WriteLine("姓名:" + item.Name + ",成績:" + item.Score); } Console.ReadKey(); } } }
到此這篇關於LINQ操作符SelectMany的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45