zoukankan      html  css  js  c++  java
  • 活代码LINQ——01

     序言

           此系列的所有代码都是运行在Win 7 64位 + Visual Basic 2008 Express Edition的环境中

         之所以学习List集合类,是因为我们先前学习的数组自身的缺陷:

         1.必须指定数组的长度;

         2.若要增长数组的长度须用ReDim语句;

         3.将整个数组作为参数传递不能有效实现预期;

        就不得不寻找一个更好的解决方案,List集合类倒是不错的选择,List是一个.NET框架的集合类,是一组预包装的数据结构,提供了比数组更强的功能。

         这个集合类的最大优点

        1.可靠;2.强大;3.高效;4.动态改变大小;

        要学习数据就必须学习LINQ(语言集成查询),LINQ允许我们编写从各种不同的数据源(而不仅仅是数据库)提取信息的查询表达式(与SQL查询相似)。

        LINQ to Object可以获取数据的数据源有:数组、List集合、类对象。

    查询 (Visual Basic)

    Visual Basic,能够创建语言集成查询 (LINQ)在代码中的表达式,集成查询都是以From子句开始,并与其它的子句相互配合。

    Aggregate 子句Distinct 子句From 子句Group By 子句Group Join 子句Join 子句Let 子句Order By 子句Select 子句Skip 子句Skip While 子句Take 子句Take While 子句Where 子句

    Aggregate 子句:,将一个或多个聚合函数应用于集合。
    Distinct 子句:以消除重复值在查询结果中的当前范围变量的值限制。
    From 子句:指定集合和查询的范围变量。
    Group By 子句:用于对查询结果的元素进行分组,可用于将聚合函数应用到每个组。
    Group Join 子句:将两个集合合并为单个分层集合。
    Join 子句:将两个集合合并为单个集合。
    Let 子句:用于计算一个值,并将其分配给该查询中的新变量。
    Order By 子句:在查询中指定列的排序顺序。
    Select 子句:声明了一组查询的范围变量。
    Skip 子句:它跳过指定的数量的集合中的元素,然后返回剩余元素。
    Skip While 子句:从而绕过集合中的元素,只要指定的条件是true,然后返回剩余元素。
    Take 子句:这将从集合的开头返回指定的数量的连续元素。
    Take While 子句:包括在集合中的元素,只要指定的条件是true并跳过剩余元素。
    Where 子句:指定查询的筛选条件。

    下面事例的功能:将数组进行传递、过滤、排序。学习From与Where、Order By结合使用。

    一、模块代码

    'Fig. 9.2:LINQWithSimpleTypeArray.vb
    'LINQ to Objects using an Integer array.
    Module LINQWithSimpleTypeArray
        Sub Main()
            'create an integer array
            Dim values As Integer() = {2, 9, 5, 0, 3, 7, 1, 4, 8, 5}
    
            Display(values, "Original array:") 'display original values
    
            'LINQ query that obtains values greater than 4 from the array
            Dim filtered = _
            From value In values _
            Where value > 4 _
            Select value
            '用Dim定义的filtered相当于一个带条件的数组
            'display filtered results
            Display(filtered, "Array values greater than 4:")
    
            'use Order By clause to sort original array in ascending order
            Dim sorted = _
            From value In values _
            Order By value _
            Select value
            Display(sorted, "Original values,sorted:") 'display sorted results
    
            'sort the filtered results into descending order
            Dim sortFilteredResults = _
                From value In filtered _
                Order By value Descending _
                Select value
            Display(sortFilteredResults, "Values greater than 4,descending order(separatedly):")
    
            'filter original array and sort in descending order
            Dim sortAndFilter = _
                From value In values _
                Where value > 4 _
                Order By value Descending _
                Select value
            Display(sortAndFilter, "Values greater than 4,descending order(one query):")
    
            Console.ReadKey()
        End Sub
        Sub Display(ByVal results As IEnumerable(Of Integer), ByVal header As String)
            '上句中的IEnumerable是一个接口,定义了人与系统之间彼此交互的方式,并对它进行标准化
            'ByVal results As IEnumerable(Of Integer)接口直接传递了一个整型数组
            Console.Write("{0}", header) 'display header
            'display each element,separated by spaces
            For Each element In results
                Console.Write("  {0}", element)
            Next
            Console.WriteLine() 'add end of line
        End Sub 'Display
    
    End Module 'LINQWithSimpleTypeArray
    

    二、运行结果:

    源于:Visual Basic 2008 How To Program     P298

  • 相关阅读:
    HDU 6464 /// 权值线段树
    HDU 6468 /// DFS
    HDU 6469 /// 二分
    HDU 6470 /// 矩阵快速幂
    USACO 2014 US Open Odometer /// 数位DP
    hdu5988(费用流,对数相乘做加法)
    对AC自动机+DP题的一些汇总与一丝总结 (2)
    对AC自动机+DP题的一些汇总与一丝总结 (1)
    POJ 1625 Censored ( Trie图 && DP && 高精度 )
    HDU 2243 ( Trie图 矩阵构造幂和 )
  • 原文地址:https://www.cnblogs.com/xiehaofeng/p/10047354.html
Copyright © 2011-2022 走看看