这一篇文章主要总结LINQ to sql的简单查询(单表查询)和联接查询(多表查询)
单表查询
需求是我们要输出TClass表中的结果。使用了from…in…select语句,代码如下:
public static void SimpleQuery() { using (L2SDBDataContext db = new L2SDBDataContext()) { var query = from tc in db.TClasses //select tc; select new { ClassID=tc.ClassID, ClassName=tc.ClassName }; Console.WriteLine("output results for table of class"); int i = 1; foreach (var item in query) { Console.WriteLine("{0},ClassID:{1},ClassName:{2}",i,item.ClassID,item.ClassName); i++; } } }
注意:这里没有用select tc,而是定义了一个新的匿名类型是因为性能的考虑,后面性能优化的部分会讲到。
输出结果:
多表查询
多表查询,也可以称为联接查询,需要通过外键联接多张表才能查询到我们想要的结果,现在的需求是某个班级及这个班级相关学生的信息。实现这个需求有两种方法,一种是内联接,另一种方法是外联接,下面是通过内联接查询的代码。
public static void Query_InnerJoin() { using (L2SDBDataContext db = new L2SDBDataContext()) { var query = from s in db.TStudents join c in db.TClasses on s.ClassID equals c.ClassID where s.ClassID == 3 select new { ClassID = s.ClassID, ClassName = c.ClassName, Student = new { Name = s.Name, StudentID = s.StudentID } }; foreach (var item in query) { Console.WriteLine("{0} {1} {2}", item.ClassID, item.ClassName, item.Student.Name); } } }
运行结果:
外联接代码:
public static void Query_OutJoin() { using (L2SDBDataContext db = new L2SDBDataContext()) { var query = from s in db.TStudents join c in db.TClasses on s.ClassID equals c.ClassID into gc from gci in gc.DefaultIfEmpty() where s.ClassID == 3 select new { ClassID = s.ClassID, ClassName = gci.ClassName, Student = new { Name = s.Name, StudentID = s.StudentID } }; foreach (var item in query) { Console.WriteLine("{0}, {1} [{2}]", item.ClassID, item.ClassName, item.Student.Name); } } }
注意:outer join时必须将join后的表into到一个新的变量中,然后调用这个对象的DefaultIfEmpty方法。
运行结果与内联接相同。
分类:
数据库技术
标签:
linq to sql
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架