[問題] 指定Datatable幾行的某個欄位塞入某值...

看板C_Sharp (C#)作者 (1+1≠2)時間9年前 (2015/08/29 08:22), 編輯推噓1(104)
留言5則, 1人參與, 最新討論串1/2 (看更多)
這個標題可能很難形容我的問題... 我使用一個例子說明... 固定時間會去某個資料夾讀取文字檔(*.TXT) 可能會有一個至數個...但是內容都大概長以下這樣... 為了說明方便,所以前面增加 xx| 表示行數,麻煩忽略前三碼 01|S124452984 <--固定>=10碼 02|A123408743 03|B342423424 04|Kaohsiung <--小於10碼定義為地區 05|G324234503 06|Tainan 07|E342542543 08|O325405453 09|R324329842 10|Taitung 11|Taitung 12|S324325325 13|Q308956456 14|Y324234234 15|W453534534 因為需要把以上的資料存入DB,所以原本的想法是.... 每一行讀取,若>=10碼,就先塞入一個List<string> Temp 若讀到<10碼的則內定為地區.... 此時就使用一個迴圈將此些List 塞入DataTable 並將地區欄位塞入為此行 由以上的資料就得知, 01.02.03 行都屬於Kashsiung 05 行屬於Tainan 07.08.09 行都屬於Taitung (但是在第10行時,已經將List存入DB,所以11行清空,SKIP) 12.13.14.15 行因為後面未有<10碼的地區,所以判定為Fail。 並將Fail的資料記錄在另一個DataTable.... 後來,有想到應該可以只用一個DataTable紀錄... 就變得每次讀取到>=10的就直接塞DataTable。 但是,如果遇到<10的,就不知道要怎麼去塞回DataTable的地區的欄位... for或foreach一定可以塞入... 但是,想問問有沒有其他快速的方式...? 例如,可以指定DataTable Row0~Row3 的 地區欄位 等於 Kaohsiung ...之類的方式... 或許可以透過LINQ or Lambda ? 請各位前輩賜教..謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.237.192.219 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1440807771.A.76B.html

08/30 00:43, , 1F
其實你上半部的方法比較好,不用直接塞到資料庫裡
08/30 00:43, 1F

08/30 00:43, , 2F
除非你的數據非常非常大
08/30 00:43, 2F

08/30 00:45, , 3F
上半部的方式,在記憶體中做地區與ID配對,最後寫入資料庫
08/30 00:45, 3F

08/30 00:48, , 4F
下半部你先將ID寫入資料庫,後來再更新地區資料,無論怎麼
08/30 00:48, 4F

08/30 00:49, , 5F
實作,都會至少多一次資料庫操作
08/30 00:49, 5F
文章代碼(AID): #1LuFjRTh (C_Sharp)
文章代碼(AID): #1LuFjRTh (C_Sharp)