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关键字。spa

    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
相关文章
相关标签/搜索