LINQ查询语法

一、LINQ查询时又两种语法可供选择:方法语法(Fluent Syntax)和查询语法(Query Expression)

  1、方法语法:本质是通过扩展方法和Lambda表达式来创建查询

  3、查询语法:查询比较类似于SQL查询

  关系:.NET公共语言运行库(CLR)并不具有查询语法的概念。所以,编译器会在程序编译时把查询表达式转换为方法语法,即对扩展方法的调用。所以使用方法语法会让我们更加接近和了解LINQ的实现和本质,并且一些查询只能表示为方法调用,如检索序列中的最大值、最小值元素的查询,他们在查询语法中就没有对应的实现。这两种语法和互相补充和兼容的,我们可以在一个查询中混合使用方法语法和查询语法。

二、链接查询运算符

  如果需要创建更加复杂的查询,我们可以在表达式之后添加其他查询运算符,产生一个查询链;一个运算符的输出sequence会成为下一个运算符的输入sequence,其结果形成了一个sequence的传输链

static void Main(string[] args)
        {
            string[] names = { "Tom", "Dick", "Harry", "Mary", "Jay" };

            IEnumerable<string> query = names
                .Where(n => n.Contains("a"))
                .OrderBy(n => n.Length)
                .Select(n => n.ToUpper());

            foreach (string name in query) Console.WriteLine(name);
        }

        // Result:
        JAY
        MARY
        HARRY

三、扩展方法的重要性

  

时间: 2024-10-18 23:43:07

LINQ查询语法的相关文章

linq查询语法和方法

1. Select Select操作符对单个序列或集合中的值进行投影.下面的示例中使用select从序列中返回Employee表的所有列: using (NorthwindDataContext db=new NorthwindDataContext()) { //linq查询语法(基本语法) var query = from e in db.Employees where e.FirstName.StartsWith("M") select e; //linq方法语法(基本方法) v

C#高级知识点概要(3) - 特性、自动属性、对象集合初始化器、扩展方法、Lambda表达式和Linq查询

1.特性(Attributes) 特性(Attributes),MSDN的定义是:公共语言运行时允许你添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型.字段.方法和属性等.Attributes和Microsoft .NET Framework文件的元数据保存在一起,可以用来向运行时描述你的代码,或者在程序运行的时候影响应用程序的行为.例如,在一个方法前标注[Obsolete]特性,则调用该方法时VS则会提示该方法已过期的警告,如下图: 又如,在.Net Re

Linq 查询 与方法调用

通常,使用linq查询时需要一个实现IQueryable<T> 的查询对象 public class DataA<T> : IQueryable<T> {....} 之后通过 var q = from c in new DataA<int>() where c > 0 select new { a = c.ToString() }; 进行查询,使用IQueryProvider  收集用户输入的表达式进行处理. 但是查询本身实际上只关注查询对象上有无可用

LINQ之路 5:LINQ查询表达式

书写LINQ查询时又两种语法可供选择:方法语法(Fluent Syntax)和查询表达式(Query Expression). LINQ方法语法的本质是通过扩展方法和Lambda表达式来创建查询.C# 3.0对于LINQ表达式还引入了声明式的查询表达式,也叫查询语法,通常来讲,它是创建LINQ查询的更加快捷的方式.尽管通过查询语法写出的查询比较类似于SQL查询,但实际上查询表达式的产生并不是建立在SQL之上,而是建立在函数式编程语言如LISP和Haskell中的list comprehensio

C#语法之Linq查询基础二

上篇C#语法之Linq查询基础一基本把Linq介绍了一下,这篇主要是列举下它的几个常见用法. 在用之前先准备些数据,新建了两个类Student.Score,并通过静态方法提供数据. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace LinqDemo { public class Student {

LINQ to Objects系列(2)两种查询语法介绍

LINQ为我们提供了两种查询语法,分别是查询表达式和查询方法语法.这篇文章分为以下几个方面进行总结. 1,一个包含两种查询语法的简单示例 2,查询表达式的结构 3,查询方法相关的运算符 一个包含两种查询语法的简单示例 一个LINQ查询既可以使用查询表达式实现,也可以用查询方法实现,还可以同时组合两种查询.下面是一个简单的示例,代码如下. namespace LINQDemo3 { class Program { static void Main(string[] args) { int[] nu

LINQ:开始使用 LINQ(五)- LINQ 中的查询语法和方法语法

开始使用 LINQ(五)- LINQ 中的查询语法和方法语法 在表示语言集成查询 (LINQ) 使用 LINQ 性查询语法,文档中的多数查询编写.但是,编译代码时,必须将查询语法转换为方法,这就需要 .NET 公共语言运行时 (CLR).这些方法调用标准查询运算符的名称类似 Where.Select.GroupBy.Join.Max和 Average.可以调用这些方法直接使用方法语法而不是查询语法. 查询语法和方法语法语义相同,但是,许多人员发现查询语法更简单.更易于阅读.某些查询必须表示为方法

C#语法之Linq查询基础一

Linq做.Net开发的应该都用过,有些地方很复杂的逻辑用Linq很方便的解决.对于Linq to object.Linq to xml.Linq to sql.Linq to Entity(EF)都可以使用linq查询.不知道大家有没有想过为什么linq对这些都可以使用呢?统一的api适用这么多.其实主要还是IEnummerable<T>和IQueryable<T>两个接口.可能有人会问为什么是两个接口?这两个接口有什么区别或者联系呢?这又要引出来Enummerable.Quer

LINQ查询操作符之Select、Where、OrderBy、OrderByDescending、GroupBy、Join、GroupJoin及其对应的查询语法

介绍    ·Select - Select选择:延迟    ·Where - Where查询:延迟    ·OrderBy - 按指定表达式对集合正序排序:延迟    ·OrderByDescending - 按指定表达式对集合倒序排序:延迟    ·GroupBy - 分组:延迟    ·Join - Join查询:延迟    ·GroupJoin - 分组Join查询:延迟    ·以上查询操作符所对应的查询语法 示例Summary.aspx.cs using System; using