来源说明:https://blog.csdn.net/sha574810590/article/details/40738069
在LINQ中,数据源和查询结果实际上都是IEnumerable
1.IEnumerable接口
IEnumerable
在.NET类库中,IEnumerable
IEnumerable
成员 |
功能 |
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 |
ToList | 从IEnumerable |
从上表可以看出,IEnumerable
注意:
IEnuerable
另外,IQuery
1.Aggregate(聚合)的用法:
简介:适用于集合的一个或多个聚合函数。 标准聚合函数都All
, Any
, Average
, Count
, LongCount
, Max
, Min
,和Sum
函数。
Module Module1 Sub Main() Dim numbers1 As Integer() = {1, 2, 3, 4, 5} Dim query1 As Integer = Aggregate num In numbers1 Into Sum(num) Console.WriteLine("Sum = " & query1) ‘显示结果为 Sum = 15 Dim numbers2 As Decimal() = {1.9, 2, 8, 4, 5.7, 6, 7.2, 0} Dim query2 = Aggregate num In numbers2 Into Sum() Console.WriteLine("SumSalary = " & query2) ‘显示结果为 SumSalary = 34.8
End Sub End Module
运行结果:
2.Aggregate(聚合)数学运算:
Module Aggregate_数学运算 Sub Main() Dim numbers As Integer() = {1, 3, 5, 6, 3, 9, 7} Dim numberTotal As Integer = Aggregate num In numbers Into Sum(num) Dim numberMax As Integer = Aggregate num In numbers Into Max(num) Dim numberAverage As Double = Aggregate num In numbers Into Average(num) Dim numberCount As Integer = Aggregate num In numbers Into Count() Dim numberMin As Integer = Aggregate num In numbers Into Min(num) Console.WriteLine("Sum = " & numberTotal & vbCrLf & _ "Max = " & numberMax & vbCrLf & _ "Average = " & numberAverage & vbCrLf & _ "Count = " & numberCount & vbCrLf & _ "Min = " & numberMin) End Sub End Module
运算结果:
3.Distinct分句的用法
'将list列表的元素以集合的形式传给IEnumerable接口 Module ListCollection Sub Main() Dim items As New List(Of String) items.Add("red") items.Insert(0, "yellow") items.Add("green") items.Add("yellow") Dim delChongfu = _ From element In items _ Select element _ Distinct '若有相同的值,保留一个值,删除其他的值 Display(delChongfu) End Sub ' Main Sub Display(ByVal items As IEnumerable) For Each item In items Console.Write(" {0}", item) Next Console.WriteLine() End Sub End Module
运行结果(本来有两个yellow,只保留了一个yellow):