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
相關文章
相關標籤/搜索