学习语言集成查询--Linq之Lambda表达式学习笔记

LINQ,语言集成查询(Language Integrated query)是一项微软技术,新增一种自然查询的SQL语法到.NET Framework的编程语言中,目前可支持Visual Basic.Net以及C#语言。

   主要包括以下三部分:LINQ to Objects主要负责对象的查询。

                       LINQ to XML主要负责XML的查询。

                       LINQ to ADO.NET主要要负责数据库的查询

                             LINQ to SQL

                             LINQ to DataSet

                             LINQ to Entities

   LINQ要解决的问题:

          面向对象鱼数据访问的结合;

          编程语言中的数据类型与数据库中的数据类型行程两套体系;

          SQL编码体验落后;

          SQL和XML都有各自的查询语言,而面向对象没有自己的查询语言;

  Lambda表达式语法

最基本的Lambda表达式语法如下:(参数列表)=>{方法体}

        说明:参数列表中的参数类型可以是明确类型或者是推断类型;如果是推断类型,则参数的数据类型将由编译器根据上下文自动推断出来。

    基本查询操作符-获取数据 Select()

    public static IEnumerable<TResult> Select<TSource,TResult>(this IEnumerable<TSource> source,Func<TSource,TResult>selector)

   ps:select方法本身是一个泛型扩展方法,它作用于IEnumerable<TSource>类型,只接受一个Func<TSource,TResult>,Func<TSource,TResult>是一个泛型委托,位于System名字控件下,System.Core.Dll中,在这里selector是一个提取器。

如:实体集合persons中有"zhang san","wang wu","zhaoliu"

//输出所有元素

var result = persons.Select(p= > p);

    过滤数据  Where()   

       public static IEnumerable<TSource>Where<TSource>(this IEnumerable<TSource> source,Func<TSource,bool>predicate)

   ps:where方法也是一个泛型扩展方法。它和Select()一样用于IEnumerable<TSource>类型,它只接受一个Func<TSource,bool>泛型委托参数,在这里predicate是一个判断条件。

//输出姓"zhang"的人

var result = persons.Where(p=>p.StartsWith("zhang"));

     排序数据 OrderBy()

        public static IOrderedEnumerable<TSource>OrderBy<TSource,TKey>(this IEnumerable<TSource> source,Func<TSource,TKey>key Selector)

ps:orderby也是一个泛型扩展方法,同select(),where()以及下面的GroupBy方法作用于IEnumerable<TSource>类型,只接受Func<TSource,TKey>类型参数,在这里KeySelector指定要排序的字段。如果想降序排列可以使用OrderByDescending方法。

如:

//排序

var result = persons,OrderBy(p = >p);

      分组数据  GroupBy()

    public static IEnumerable<IGrouping<TKey,TSource>>GroupBy<TSource,TKey>(this IEnumerable<TSource>source,Func<TSource,TKey>keySelector) 

作用于IEnumerable<TSource>类型,它只接受一个Func<TSource,TKey>泛型委托参数,在这里keySelector指定要分组的字段。

   初步学习,如有误还望指教!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值