LINQ查询语法与实战示例

需积分: 10 11 下载量 176 浏览量 更新于2024-07-30 收藏 135KB PDF 举报
"这篇文章主要介绍了LINQ(Language Integrated Query,语言集成查询)的语法和实例,帮助读者通过实例快速学习如何使用LINQ进行数据查询。文章涵盖了从基本的查询操作到更复杂的过滤条件,展示了LINQ与SQL语句的对应关系,并提供了Lambda表达式的实现方式。" LINQ是一种在.NET框架中引入的查询语言,它允许开发者以一种更加直观和类型安全的方式对各种数据源进行查询。在C#和Visual Basic中,LINQ与Lambda表达式相结合,极大地简化了数据访问和处理的过程。 1. 查询所有记录并选择特定列: SQL语句:`SELECT Sname, Ssex, Class FROM Student` LINQ:`from s in Students select new { s.SNAME, s.SSEX, s.CLASS }` Lambda:`Students.Select(s => new { SNAME = s.SNAME, SSEX = s.SSEX, CLASS = s.CLASS })` 这个例子展示了如何使用LINQ获取Student集合中的所有记录,并只选择Sname、Ssex和Class属性。 2. 获取唯一值: SQL语句:`SELECT DISTINCT DEPART FROM Teacher` LINQ:`from t in Teachers.Distinct() select t.DEPART` Lambda:`Teachers.Distinct().Select(t => t.DEPART)` 这里演示了如何使用Distinct方法去除Teacher集合中DEPART列的重复值。 3. 查询所有记录: SQL语句:`SELECT * FROM Student` LINQ:`from s in Students select s` Lambda:`Students.Select(s => s)` 这个例子展示了最简单的查询,即获取Student集合中的所有记录。 4. 带条件的查询(范围查询): SQL语句:`SELECT * FROM Score WHERE Degree BETWEEN 60 AND 80` LINQ:`from s in Scores where s.DEGREE >= 60 && s.DEGREE < 80 select s` Lambda:`Scores.Where(s => (s.DEGREE >= 60 && s.DEGREE < 80))` 这个例子展示了如何在LINQ中使用Where方法添加条件,查询Score集合中Degree在60到80之间的记录。 5. 基于集合的包含查询: SQL语句(IN):`SELECT * FROM Score WHERE Degree IN (85, 86, 88)` LINQ:`from s in Scores where new decimal[] {85, 86, 88}.Contains(s.DEGREE) select s` Lambda:`Scores.Where(s => new Decimal[] {85, 86, 88}.Contains(s.DEGREE))` SQL语句(NOT IN):`SELECT * FROM Score WHERE Degree NOT IN (85, 86, 88)` LINQ:`from s in Scores where !new decimal[] {85, 86, 88}.Contains(s.DEGREE) select s` Lambda:`Scores.Where(s => !new Decimal[] {85, 86, 88}.Contains(s.DEGREE))` 这两个例子分别展示了如何使用LINQ实现IN和NOT IN操作,查询Score集合中Degree值在指定数组内的或不在数组内的记录。 通过这些实例,我们可以看到LINQ是如何提供了一种与SQL类似的查询方式,但更易于在编程环境中使用。同时,Lambda表达式使得这些查询更加简洁和易读。学习和掌握LINQ不仅可以提高代码的可读性和维护性,还能有效地提升开发效率,特别是在处理复杂的数据查询和操作时。