zoukankan      html  css  js  c++  java
  • vb的LINQ实现

    vb实现LINQ非常简单的例子:

            Dim numbers() As Integer = {1, 2, 3, 4, 5, 6, 7}
            Dim allNumbers = From number In numbers
            For Each num In allNumbers
                Console.WriteLine(num & "   ")
            Next

    LINQ中Let用法:

    let关键字,可以让我们的linq查询不单单仅返回IEnumberable<T>类型的结果了,一个linq语句可以添加多个let关键字。

        Public Sub TestLet()
    
            Dim numbers() As Integer = {1, 2, 3, 4, 5, 6, 7}
            'let关键字,允许我们定义第二个变量,并存储特定值。本例中,存储了,是否偶数的判断
            '这意味着,返回值可以不单单只是一个IEnumerable(of T)类型的值了。
            Dim myEvens = From number In numbers
                          Let isEven = (number Mod 2 = 0)
    
            For Each even In myEvens
                Console.WriteLine(even.number & "    " & even.isEven)
            Next
    
        End Sub
     

    LINQ中select用法:

    上面的两个例子,我们省略了select关键字,这意味着我们使用了默认的select行为,即,选择了指定的每个查询结果(含let变量),逻辑上等同于select *.使用select关键字,我们可以选择或者组合我们想要的结果。同时重新确定变量的作用域,因为linq查询语句只公开select的内容。
     
            Dim customerInfo = From cust In Customers, ord In cust.Orders _
                               Select myDate = ord.OrderDate, _
                                      name = cust.FirstName & cust.LastName
    
    
            For Each info In customerInfo
                Console.WriteLine(info.myDate & info.name)
            Next
     

    LINQ中的查询结果

    上面的例子中,查询结果均使用了匿名类型。匿名类型允许你可以在select子句中指定不同数量的字段,而无需预先指定,由特定字段组合出来的准确类型。
    编译器会推断出匿名类型的结构。匿名类型也是强类型的。

    LINQ的延迟查询

    查询声明实际上不会检索这些数据;只在执行需要数据的操作时,才会导致检索这些数据,这样你可以将查询分成几个逻辑部分,并且仍能实现,只要运行一次就可以得到结果的性能优势。
    但是像count之类的方法,是需要立即执行的。
    立即执行demo:
            Dim customerInfo = From cust In Customers, ord In cust.Orders _
                               Select myDate = ord.OrderDate, _
                                      name = cust.FirstName & cust.LastName
    
            Dim count = customerInfo.Count
    延迟执行demo:
            Dim seattleCustomers = From cust In Customers
                                   Where cust.City = "Seattle"
            Dim recentOrders = From ord In orders
                               Where ord.OrderDate.Year = 2012
    
            Dim cusInfos = From cust In seattleCustomers, ord In recentOrders
                          Where cust.CustomerId = ord.CustomerId
                          Select name = cust.LastName & ", " & cust.FirstName, _
                                cust.CustomerId, ord.OrderDate
                          Order By OrderDate, name
    
            '上面LINQ只有在此处运行时,才被执行
            For Each custInfo In cusInfos
                'take action on the data here
            Next
     
     
    参考文章:
    http://msdn.microsoft.com/zh-cn/magazine/cc163401.aspx
     
     
     
  • 相关阅读:
    poj_2417 (baby_step,giant_step算法)
    多校第4场1012
    欧拉回路小结:hihocoder49,50,51
    xor问题的小结(HDU_5269 && HDU_5270 && NEU_1600)
    2015年大连邀请赛F题
    字符串处理——Tire树__LA3942
    15陕西省赛——数学题——n维空间切d刀共能分成多少份???
    ACM荣耀之路;
    选课时间!
    二叉树模板!
  • 原文地址:https://www.cnblogs.com/RealAlex/p/3175361.html
Copyright © 2011-2022 走看看