LINQ to Sql系列二 简单查询和联接查询
2016-10-24 17:17
411 查看
这一篇文章主要总结LINQ to sql的简单查询(单表查询)和联接查询(多表查询)
单表查询
需求是我们要输出TClass表中的结果。使用了from…in…select语句,代码如下:
注意:这里没有用select tc,而是定义了一个新的匿名类型是因为性能的考虑,后面性能优化的部分会讲到。
输出结果:
回到顶部
运行结果:
外联接代码:
注意:outer join时必须将join后的表into到一个新的变量中,然后调用这个对象的DefaultIfEmpty方法。
运行结果与内联接相同。
单表查询
需求是我们要输出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系列二 简单查询和联接查询
- LINQ to SQL系列 查询 使用LINQ to SQL做简单查询
- LINQ to SQL系列 查询 使用LINQ to SQL做简单查询
- 简单骗过DataContext,统计Linq to SQL执行查询的次数
- Linq to Sql 学习系列之四 查询句法
- (LINQ 学习系列)(2)LINQ to SQL 查询
- Linq to sql实现简单查询和分页
- (LINQ 学习系列)(2)LINQ to SQL 查询
- LINQ to SQL 简单查询
- LINQ To SQL深入学习系列之四(LINQ查询基础)
- [新手入门]快速学习 ADO.NET Entity Framework系列文章 #3 -- LINQ-to-SQL、EntitySQL、查询产生器方法(Query builder)三种语法
- LINQ to SQL系列Part 3 - Querying our Database
- Linq to Sql: 集成数据库语言查询之一
- 是否会成为问题——Linq to Sql的执行可能无法复用查询计划
- 一步一步学Linq to sql(四):查询句法
- LINQ to SQL系列Part 7 - Updating our Database using Stored Procedures
- LINQ to SQL系列Part 6 - Retrieving Data Using Stored Procedures
- Linq to Sql: 集成数据库语言查询之二
- 步步为营VS 2008 + .NET 3.5(9) - DLINQ(LINQ to SQL)之执行SQL语句的添加、查询、更新和删除
- 步步为营VS 2008 + .NET 3.5(8) - DLINQ(LINQ to SQL)之面向对象的添加、查询、更新和删除