• 活代码LINQ——07


    来源说明: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函数。

    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):

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

  • 相关阅读:
    廖雪峰的多线程 1
    保持良好的心态 戒骄戒躁
    Break camelCase
    int32 to IPv4 (int32到IPv4地址转换)
    Stop gninnipS My sdroW!
    Find The Parity Outlier 找到奇偶校验异常值
    今日新闻整理 2020-7-31
    改造rabbitmq demo 到 jpa
    Flink实战(110):FLINK-SQL应用场景(11)connector(十九)Flink 与 hive 结合使用(七) Flink Hive Connector 使用
    Hadoop基础(六十):面试题 Hadoop数据切片(二)切片机制源码
  • 原文地址:https://www.cnblogs.com/xiehaofeng/p/10079693.html
Copyright © 2020-2023  润新知