LINQ 查询表达式(C# 编程指南)

LINQ 查询表达式(C# 编程指南)

语言集成查询 (LINQ) 是一组技术的名称,这些技术建立在将查询功能直接集成到 C# 语言(以及 Visual Basic 和可能的任何其他 .NET 语言)的基础上。  借助于 LINQ,查询现在已是高级语言构造,就如同类、方法、事件等等。 

对于编写查询的开发人员来说,LINQ 最明显的“语言集成”部分是查询表达式。  查询表达式是使用 C# 3.0 中引入的声明性查询语法编写的。  通过使用查询语法,您甚至可以使用最少的代码对数据源执行复杂的筛选、排序和分组操作。  您使用相同的基本查询表达式模式来查询和转换 SQL 数据库、ADO.NET 数据集、XML 文档和流以及 .NET 集合中的数据。 

下面的示例演示了完整的查询操作。  完整操作包括创建数据源、定义查询表达式,以及在 foreach 语句中执行查询。 

C#
复制
class LINQQueryExpressions
{
    static void Main()
    {

        // Specify the data source.
        int[] scores = new int[] { 97, 92, 81, 60 }; // Define the query expression. IEnumerable<int> scoreQuery = from score in scores where score > 80 select score; // Execute the query. foreach (int i in scoreQuery) { Console.Write(i + " "); } } } // Output: 97 92 81 

有关 C# 中的 LINQ 基础知识的更多信息,请参见 Getting Started with LINQ in C#。    

  • 查询表达式可用于查询和转换来自任意支持 LINQ 的数据源中的数据。  例如,单个查询可以从 SQL 数据库检索数据,并生成 XML 流作为输出。 

  • 查询表达式容易掌握,因为它们使用许多常见的 C# 语言构造。  有关更多信息,请参见 Getting Started with LINQ in C#。 

  • 查询表达式中的变量都是强类型的,但许多情况下您不需要显式提供类型,因为编译器可以推断类型。  有关更多信息,请参见Type Relationships in LINQ Query Operations (C#)。 

  • 在您循环访问 foreach 语句中的查询变量之前,不会执行查询。  有关更多信息,请参见 Introduction to LINQ Queries (C#)。 

  • 在编译时,根据 C# 规范中设置的规则将查询表达式转换为“标准查询运算符”方法调用。  任何可以使用查询语法表示的查询也可以使用方法语法表示。  但是,在大多数情况下,查询语法更易读和简洁。  有关更多信息,请参见 C# 语言规范Standard Query Operators Overview。 

  • 作为编写 LINQ 查询的一项规则,建议尽量使用查询语法,只在必需的情况下才使用方法语法。  这两种不同形式在语义或性能上没有区别。  查询表达式通常比用方法语法编写的等效表达式更易读。 

  • 一些查询操作,如 Count<TSource>Max,没有等效的查询表达式子句,因此必须表示为方法调用。  方法语法可以通过多种方式与查询语法组合。  有关更多信息,请参见Query Syntax and Method Syntax in LINQ (C#)。 

  • 查询表达式可以编译为表达式树或委托,具体取决于查询所应用到的类型。  IEnumerable<T> 查询编译为委托。  IQueryableIQueryable<T> 查询编译为表达式树。  有关更多信息,请参见表达式树(C# 和 Visual Basic)

posted on 2016-11-12 10:03 时空观察者9号 阅读(...) 评论(...) 编辑 收藏

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值