看板 C_Sharp 關於我們 聯絡資訊
各位前輩好, 最近在遇到一個狀況是, 程式已經執行到從資料庫取出幾筆資料且存在一個DataTable內, 然而現在需要去資料庫裏面撈出剩下不在這張Table內的資料, 而且因為Table是用雙主鍵的方式,所以必須要同時判斷兩個欄位 舉例而言,如果我目前的狀況是: [資料庫內資料] [已取出的DataTable] No Version No Version 1 1 1 1 2 1 2 1 2 2 3 2 3 1 3 2 所以我需要取出的是剩餘的: [剩下來的資料] No Version 2 2 3 1 問題在於,已經取出的資料是在程式裡面,不是資料庫裡面的Table 而且No跟Version兩個欄位都要同時符合... 原本我是想說用NOT IN的方式,但是後來發現似乎沒辦法同時比較兩個欄位? 想了一陣子實在找不到辦法,只好發文求救了...QQ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.133.198.233 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1446995823.A.B68.html
leicheong: NOT(A.No=B.No AND A.Version = B.Version) ? 11/08 23:30
johnpage: 僅對標題回答,請使用LINQ 11/08 23:32
leicheong: 把你那datatable寫進temp table再處理比較有效率. 11/08 23:32
leicheong: 樓樓上這也對啦. 11/08 23:33
照l大的做法可以找到符合條件的資料了,可是他會變成兩張表JOIN的全部結果 例如: [Result] No Version 1 1 ┐ 1 1 ┘ 因為條件成立了 2 1 ┐ 所以這兩組都少了一筆沒錯 2 1 ┘ 2 2 ┐ 2 2 ├ 這裡因為不在B表裡面,所以有三筆 2 2 ┘ ...下略 我的SQL寫法是: SELECT A.No, A.Version FROM A, B WHERE NOT(A.No = B.No AND A.Version = B.Version); 我覺得剩下的這個問題好像很基本...但是我試了一下還是沒做出來QQ 另外j大提到的LINQ我有機會會再試試看的,感謝! ※ 編輯: kajm (220.133.198.233), 11/09/2015 00:22:44
wanderer1412: 先一次取出,再用defaultview的rowfilter區分, 11/09 00:20
wanderer1412: 分別存在兩個不同的 table,就是你要的 11/09 00:21
kajm: 有了!照w大的方法試出來了,萬分感激! 11/09 01:08