台灣最大程式設計社群網站
線上人數
2727
 
會員總數:246279
討論主題:189813
歡迎您免費加入會員
討論區列表 >> VB.NET >> 請問合併資料表 Linq 寫法
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
請問合併資料表 Linq 寫法
價值 : 300 QP  點閱數:295 回應數:6
樓主

P陳
初級顧問
15286 191
9180 2268
發送站內信

各位好:

從資料庫中讀入三個 DataTable

學生主檔 StudentDt
學號,姓名,班級編號,座號

班級主檔 ClassDt
班級編號,班級名稱,教師編號

教師主檔 TeacherDt
教師編號,教師姓名

請問:
A.現在要將二個 Dt 合併成一個 StudentClassDt,請問 Linq 要如何寫?
學號,姓名,班級編號,班級名稱,座號

B.現在要將這三個 Dt 合併成一個 StudentClassTeacherDt,請問 Linq 要如何寫?
加入班級名稱,教師編號,教師姓名
學號,姓名,班級編號,班級名稱,教師編號,教師姓名,座號




搜尋相關Tags的文章: [ 合併資料表 LINQ 寫法 ] ,
本篇文章發表於2020-12-12 20:45
1樓
作者回應

P陳
檢舉此回應
目前我能作到的如下 請各位教導一下:

Dim StudentClassdt As Object = (From S In StudentDt
Join C In ClassDt On S("班級編號") Equals C("班級編號")
Select (S("學號"), S("班級編號"), C("班級名稱"))
)

For Each row1 As DataRow In StudentClassdt.rows
Debug.Print(row1("學號"))
Next
本篇文章回覆於2020-12-12 21:25
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

P陳
檢舉此回應
再經研究 紅色的區塊 語法錯誤,綠色區塊可以顯示資料,但已不是我原來的欄名了,要用 Item1 Item2...

Dim StudentClassdt As Object = (From S In StudentDt
Join C In ClassDt On S("班級編號") Equals C("班級編號")
Select (S("學號"), S("班級編號"), C("班級名稱"))
)

For Each row1 As DataRow In StudentClassdt.rows
Debug.Print(row1("學號"))
Next



For Each row1 As Object In StudentClassdt
Debug.Print(row1.item1)
Next
本篇文章回覆於2020-12-12 21:51
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
不錯的參考

真的有點難
檢舉此回應
在sql的procedure 把3個table 塞在一個 暫存table

鋼琴 跟 薩克斯風 樂聲都很美
本篇文章回覆於2020-12-13 19:43
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

P陳
檢舉此回應
真的有點難您好:
用 Access Query 那種的寫法我會,我的目的是要將 讀入資料 與 組合分開來作,以減輕伺服器的負擔。
因為 每次讀取時都要在 SQL 中組合我要的資料再送出來。
比如學生主檔有3000筆資料,我要某個班級的資料時(比如40筆),就要組合 學生主檔 教師主檔 班級主檔 再給出我要的資料 ,個人端的電腦就只能乾等。
我的想法是 教師主檔 班級主檔 先讀進來放者,讀入只要讀入某個班級的學生資料後,再用 LINQ 來組合,此時只要組合40筆的資料即可。可以減少伺服器的負擔。
因為多人同時使用,所以各項條件來讀取學生主檔次數很高,將資料分成前後端來作,可以提高反應速度,減輕伺服器的負擔。

是否真是如此,要測一下了。
本篇文章回覆於2020-12-13 22:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
最有價值解答

香帥
檢舉此回應
請參考
LINQ學習筆記(6) Join — 多表單多條件式
雖然是c#寫的,但要轉為vb.net應該很簡單
本篇文章回覆於2020-12-14 22:11
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

P陳
檢舉此回應
香帥您好:
那個例子的資料來源是 LIST,而我是希望能用 Datatable
目前正在努力研習中。
謝謝您
本篇文章回覆於2020-12-16 21:00
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.