“21天好习惯” 第一期-4

ASP.NET MVC程序开发—— LINQ介绍

        LINQ是.NET Framework 3.5的新特性,其全称是 Language Integrated Query,即语言集成查询,是指将查询功能和语言结合起来。从而为我们提供一种统一的方式,让我们能在C#或VB.NET语言中直接查询和操作各种数据。

LINQ的作用

        作为软件开发人员,我们很大一部分时间都花在了获取和操作数据上面。而说到数据,我们会自然而然地想到包含在关系数据库里的信息、使用的XML文档、保存在本地的DataSet、内存中的List列表等等。通常我们会对数据进行过滤和定位,查询出符合要求的那一部分数据。

        如下表列出了操作各种常见类型的API

目标数据

操作数据的.NET类型

关系数据

System.Data.dll和System.Data.SqlClient.dll

XML文档数据

System.Xml.dll

元数据

System.Reflection命名空间

内存对象集合

System.Array和   System.Collection/System.Collection.Generic命名空间

        LINQ(语言级集成查询)的意图就是提供一种统一且对称的方式,让程序员在广义的数据上获取和操作数据。通过使用LINQ,我们能够在C#编程语言内直接创建被称为“查询表达式(query expression)”的实体。这些查询表达式是基于许多查询运算符(query operator)的,而且是有意设计成类似SQL表达式的。并且,查询表达式可以用来与多种数据进行交互,以一种统一的方式来操作各种数据。

从这里开始我们的LINQ学习之旅  

        LINQ中最基本的数据单元是sequences和elements。一个sequence是实现了IEnumerable<T>的对象,而一个element是sequence中的每一个元素。如下,names就是一个sequence,”Tom”,“Dick”和”Harry”则是elements。

string[] names = { "Tom", "Dick", "Harry"   };

    // 获取所有长度大于等于4的名字
    IEnumerable<string> filteredNames = System.Linq.Enumerable.Where(
        names, n => n.Length >= 4);

    foreach (string n in filteredNames)
        Console.WriteLine(n);

输出:
Dick
Harry

        可以通过使用var关键字来进一步简写我们的query:

 var filteredNames = names.Where(n => n.Length >= 4);

        大部分查询运算符都接受一个lambda表达式作为参数,lambda表达式决定了查询的行为特性和结果。在上例中,lambda表达式为:

n => n.Length   >= 4

        Lambda表达式格式为:(parameters) => expression-or-statement-block

        下面的query获取所有包含字母a的名字:

     string[] names = { "Tom", "Dick", "Harry" };
     IEnumerable<string> filteredNames = names.Where(n => n.Contains("a"));

     foreach (string name in filteredNames)
           Console.WriteLine(name);    // Harry

        我们通过使用扩展方法和lambda表达式来建立了LINQ query。我们会发现,这种策略非常的灵活和适合query的创建,因为我们可以级联的使用查询运算符。通常,这种方法被称为LINQ方法语法(英文著作中称为fluent syntax)。

        C#还提供了另外一种书写query的语法,叫做查询表达式语法(英文著作中称为query expression syntax),下面是一个用查询表达式语法建立的query:

IEnumerable<string> filteredNames = from n in names
                                          where n.Contains("a")
                                          select n;    // Harry

以上为工作室老师参考网上资料在上课时所讲解内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值