来源说明:https://blog.csdn.net/sha574810590/article/details/40738069

在LINQ中,数据源和查询结果实际上都是IEnumerable<T>或IQueryable<T>类型对象,所以可以通过使用普通对象的形式(调用方法、使用属性等)对数据源进行查询或使用查询结果数据。

1.IEnumerable<T>接口

IEnumerable<T>泛型接口支持在制定数据集合上进行迭代操作。它定义了一组扩展方法,用来对数据集合中的元素进行遍历、过滤、排序、搜索等操作。在LINQ中,数据源实际上是实现了接口IEnumerable<T>的类,通过select子句返回的查询结果页是一个实现了IEnumerable<T>的类。

在.NET类库中,IEnumerable<T>接口提供了大量与查询相关的方法。这些方法实际上是以扩展方法的形式定义,但是由于它的作用类型也为IEnumerable<T>接口,所以使用上和成员方法很类似。

IEnumerable<T>接口主要成员

成员

功能

 Aggregate  对序列应用累加器函数,可以指定累加方法
 Sum

计算序列中所有元素的和,返回值有int、long、float、double、decimal类型,并且可以指定元素到数值的映射方法

 Average

计算序列中所有元素的平均值,返回值有int、long、float、double、decimal类型,并且可以指定元素到数值的映射方法

 Max  计算序列中所有元素的最大值,返回值有int、long、float、double、decimal类型,并且可以指定元素到数值的映射方法
 Min  计算序列中所有元素的最小值,返回值有int、long、float、double、decimal类型,并且可以指定元素到数值的映射方法
 All  检查是否序列中所有元素都满足条件,可以指定条件判断方法。如果所有元素都满足条件返回True,否则返回False
 Any  检查序列中是否有任何一个元素满足条件,可以指定条件的判断方法。如果有一个以上(含一个)元素满足条件返回True,否则返回False
 Contains  检查数据系列中是否包含特定的元素,可以指定相等比较方法
 Count  返回序列中满足指定条件的元素的数量,可以指定条件判断方法
 LongCount  返回序列中满足指定条件的元素的长数量,可以指定条件判断方法
 Cast  将IEnumerable中的元素转换为指定的数据类型
 DefaultIfEmpty  返回序列中指定位置的元素。如果序列为空,则返回默认的元素值
 ElementAt  返回序列中指定索引处的元素
 ElementAtOrDefault  返回序列中指定索引处的元素。如果序列为空,则返回默认值
 First  返回序列中满足指定条件的第一个元素,可以指定条件判断方法
 FirstOrDefault  返回序列中满足指定条件的第一个元素。如果不存在则返回默认值,也可以指定条件判断方法
 Last  返回序列中满足指定条件的最后一个元素,可以指定条件判断方法
 LastOrDefault  返回序列中满足指定条件的最后一个元素。如果不存在则返回默认值,也可以指定条件判断方法
 Single  返回序列中满足指定条件的唯一元素。如果不止一个元素满足条件会引发一场,可以指定条件判断方法
 SingleOrDefault 返回序列中满足指定条件的唯一元素。如果不存在则返回默认值,如果不止一个元素满足条件会引发一场,可以指定条件判断方法 
Reverse 反转序列中元素的顺序 
 Distinct 返回序列中不重复的元素的集合,可以指定相等比较方法 
 Concat 连接两个序列,直接首尾相连。返回结果可能存在重复数据 
 Except 获取两个元素集合的差集,可以指定相等比较方法 
 Intersect  获取两个元素集合的交集,可以指定相等比较方法
 Union  获取两个元素集合的并集,可以指定相等比较方法

SequenceEqual

比较两个序列是否相等,可以指定相等比较方法 
 Where 根据制定条件对集合中元素进行筛选,返回满足条件的元素集合 
 Skip 跳过序列中指定数量的元素,然后返回剩余的元素 
 SkipWhile 跳过序列中满足指定条件的元素,然后返回剩余的元素,可以指定条件判断方法 
 Take 从序列的开头返回指定数量的连续元素 
 TakeWhile 返回从序列开始的满足指定条件的连续元素,可以指定条件判断方法 
 ToArray 从IEnumerable<T>创建一个数组 
 ToList 从IEnumerable<T>创建一个List<T> 

从上表可以看出,IEnumerable<T>提供的方法包括数值运算(Sum、Min、Max、Average)、元素数量(Count、LongCount)、取值(First、Last、ElementAt等)、提取子集(Skip、SkipWhile、Take、TakeWhile、)集合操作(Reverse、Concat、Distinct、Except、Intersect、Union、SequenceEqual等)。这些方法提供了LINQ所需要的所有操作。

注意:

IEnuerable<T>继承自IEnumerable<T>接口,所以它也包含IEnumerable接口的所有方法,所以还包括Select()、SelectMany()、Repeat()等方法。

另外,IQuery<T>接口从IEnumerable<T>派生而来,通常也可以作为数据源使用,它的使用和IEnumerable<T>类似。

1.Aggregate(聚合)的用法:

简介:适用于集合的一个或多个聚合函数。 标准聚合函数都All, Any, Average, Count, LongCount, Max, Min,和Sum函数。

  1. Module Module1
  2.  
  3. Sub Main()
  4. Dim numbers1 As Integer() = {1, 2, 3, 4, 5}
  5.  
  6. Dim query1 As Integer = Aggregate num In numbers1 Into Sum(num)
  7.  
  8. Console.WriteLine("Sum = " & query1) ‘显示结果为 Sum = 15
  9.  
  10. Dim numbers2 As Decimal() = {1.9, 2, 8, 4, 5.7, 6, 7.2, 0}
  11.  
  12. Dim query2 = Aggregate num In numbers2 Into Sum()
  13.  
  14. Console.WriteLine("SumSalary = " & query2) ‘显示结果为 SumSalary = 34.8
  1. End Sub End Module

 运行结果:

 

2.Aggregate(聚合)数学运算:

  1. Module Aggregate_数学运算
  2. Sub Main()
  3. Dim numbers As Integer() = {1, 3, 5, 6, 3, 9, 7}
  4.  
  5. Dim numberTotal As Integer = Aggregate num In numbers Into Sum(num)
  6. Dim numberMax As Integer = Aggregate num In numbers Into Max(num)
  7. Dim numberAverage As Double = Aggregate num In numbers Into Average(num)
  8. Dim numberCount As Integer = Aggregate num In numbers Into Count()
  9. Dim numberMin As Integer = Aggregate num In numbers Into Min(num)
  10. Console.WriteLine("Sum = " & numberTotal & vbCrLf & _
  11. "Max = " & numberMax & vbCrLf & _
  12. "Average = " & numberAverage & vbCrLf & _
  13. "Count = " & numberCount & vbCrLf & _
  14. "Min = " & numberMin)
  15. End Sub
  16. End Module

  运算结果:

3.Distinct分句的用法

  1. '将list列表的元素以集合的形式传给IEnumerable接口
  2. Module ListCollection
  3. Sub Main()
  4. Dim items As New List(Of String)
  5. items.Add("red")
  6. items.Insert(0, "yellow")
  7. items.Add("green")
  8. items.Add("yellow")
  9. Dim delChongfu = _
  10. From element In items _
  11. Select element _
  12. Distinct '若有相同的值,保留一个值,删除其他的值
  13. Display(delChongfu)
  14. End Sub ' Main
  15.  
  16. Sub Display(ByVal items As IEnumerable)
  17. For Each item In items
  18. Console.Write(" {0}", item)
  19. Next
  20. Console.WriteLine()
  21. End Sub
  22. End Module

  运行结果(本来有两个yellow,只保留了一个yellow):

来源:https://blog.csdn.net/sha574810590/article/details/40738069

活代码LINQ——07的更多相关文章

  1. 活代码LINQ——09

    一.代码 ' Fig. 9.7: LINQWithListCollection.vb ' LINQ to Objects using a List(Of String). Module LINQWit ...

  2. 活代码LINQ——06

    一.模块代码 ' Fig. 9.4: LINQWithArrayOfObjects.vb ' LINQ to Objects using an array of Employee objects. M ...

  3. 活代码LINQ——01

    序言 此系列的所有代码都是运行在Win 7 64位 + Visual Basic 2008 Express Edition的环境中 之所以学习List集合类,是因为我们先前学习的数组自身的缺陷: 1. ...

  4. 活代码LINQ——08

    一.模块代码 ' Fig. 9.6: ListCollection.vb ' Generic List collection demonstration. Module ListCollection ...

  5. 活代码LINQ——05

    片段代码: ' Exercise 9.3 Solution: Invoice.vb ' Invoice class. Public Class invoide ' declare variables ...

  6. 活代码LINQ——04

    一.主模块代码: 'Fig.4.16:GradeBookTest.vb 'Create and manipulate a GradeBook object;illustrate validation ...

  7. 活代码LINQ——03

    一.主模块代码: 'Fig.4.13:GradeBookTest.vb 'GradeBook constructor used to specify the course name at the 't ...

  8. 活代码LINQ——02

    一.复习基础——属性与实例变量 'Fig. 4.8:GradeBookTest.vb 'Create and manipulate a GradeBook object. Module GradeBo ...

  9. Linq to EF 与Linq to Object 使用心得

    大家都知道Linq既可以用来查询数据库对象(我这里指的是Entity FrameWork里的Model对象),也可以用来查询内存中的IEnumerable对象. 两者单独查询时都不会出现什么问题,不过 ...

随机推荐

  1. Android 全局使用第三方字体

    给APP全局设置字体主要分为两个方面来介绍 一.给原生界面设置第三方字体 1.准备工作-下载第三方字体:传送门 将文件放入工程assets目录下.(一般个人习惯单独命名一个文件夹放字体文件,也可直接放 ...

  2. 【Git】Git使用记录: remove *.lock eg: index.lock/head.lock

    问题 Another git process seems to be running in this repository, e.g. an editor opened by 'git commit' ...

  3. git误commit大文件导致不能push问题解决

    git push时终端报错: error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413 Request Ent ...

  4. 你有可能不知道的css浮动问题

    最近在开发过程中,有的时候会经常遇见明明知道需要这样做,但是为什么要这样做的原因我们却总是不明所以然. 先来解释下什么叫做清除浮动吧: 在非IE浏览器(如Firefox)下,当容器的高度为auto,且 ...

  5. js的点滴

    一些好的博客 http://www.cnblogs.com/coding4/p/7809063.html canvas http://www.cnblogs.com/coding4/p/5593954 ...

  6. Git的基本使用教程

    http://www.cnblogs.com/tugenhua0707/p/4050072.html 上传本地文件仓库到远程仓库大致步骤: 1.在安装完git时,先创建本地的一个仓库(新建一个文件夹) ...

  7. python 往mysql数据库中插入多条记录。

    最近想写mysql库,用到insert into语句,如何一次性将多条记录插入库表中呢. MySQLdb提供了两个执行语句的方法:一个是execute(),另一个是executemany() exec ...

  8. 音频转化mp3 ,到底选vbr还是cbr

    毫无疑问,aac格式是最好的. 其次,应该是 vbr. 参考下面文章 http://tieba.baidu.com/p/1966991568 总结: 1.正版iTunes Plus 256K AAC格 ...

  9. GT sport赛道详解 - Dragon Trail | 龙之径

    参考:GT sport所有赛道简介 今天的心情变化挺大,从绝望放弃到豁然开朗. 前言:GT sport有个排位赛,是每位sim赛车手提升自己等级的唯一途径,其中一个排位赛就是龙之径II(逆时针跑),我 ...

  10. windows下用c++调用caffe做前向

    参考博客: https://blog.csdn.net/muyouhang/article/details/54773265 https://blog.csdn.net/hhh0209/article ...