2011年6月21日 星期二

#LinQ 作資料查詢

碰到說
資料庫來源不同,建立成兩個 datatable, 該如何再進一步 SQL 篩選結合建立新的 datatable


可能需要透過 LinQ 這個東西來作
要查一下

使用 Visual Basic 撰寫 LINQ 入門

查詢 (Visual Basic)



' Data source.
Dim numbers() As Integer = {0, 1, 2, 3, 4, 5, 6}

' Query creation.
Dim evensQuery = From num In numbers _
                 Where num Mod 2 = 0 _
                 Select num

' Query execution.
For Each number In evensQuery
    Console.Write(number & " ")
Next

        ' Query execution.
        '似乎查詢語法的結果,每筆資料會是一個 datarow
        '所以用增加每個 row 的方式

        '不能直接把 LinQ 查詢出來的結果 tbl, 直接複製到 dataTable
        '透過 ImportRow(datarow) 來作,或是 evensQuery.CopyToDataTable 來複製或繫結

LINQ - join 與 let
http://blog.xuite.net/cppbuilder/blog/14800296

==============================================
太不熟了
馬上就碰到問題

從查詢中建立 DataTable (LINQ to DataSet)


偵錯 LINQ



================================================
太靠北了
因為資料數值 可能會包含 ''空白字元"
變成說我再比對欄位的時候
核對找不到資料.....
用trim()去掉頭尾的空白字元
===============================================

查詢DataRow欄位(LINQ to DataSet)


 LINQ的经典例子-Where,Select、SelectMany、SkipWhile子句中使用数组索引


======================================================

SELECT 在使用上
如果有創造或是結合成為新的 datarow 時
要用 SELECT NEW WITH {
                           裡面放自訂的欄位
                              .自訂欄位 = 某個值
                            或是說
                            放原本宣告的 dataTable
                               a, b ........
                                             }

當下 LinQ 字串時
宣告承接 LinQ 字串 的變數型別
要與 SELECT 出來的 型別相當
例如
query as IEnumerable(Of DataRow)
無法承接
SELECT NEW WITH { a, b }
因為 a, b 兩個都是 DataRow,


發現是跟 LINQ 的 select 之下 是 匿名型別
在指定完欄位以後該如何轉換匿名型別為目標型別?


LinQ 學習筆記 – LinQ to SQL

========================================
換個效能不佳的方式先解
用flag去紀錄核對的兩個 table 哪筆資料應該被撈出來
再寫回去 table 裡面 (視情況建立新欄位)

沒有留言:

張貼留言