作者don750421 (1+1≠2)
看板C_Sharp
標題[問題] 指定幾行的某個欄位塞入某值...
時間Sat Aug 29 08:22:46 2015
這個標題可能很難形容我的問題...
我使用一個例子說明...
固定時間會去某個資料夾讀取文字檔(*.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
→ Litfal: 其實你上半部的方法比較好,不用直接塞到資料庫裡 08/30 00:43
→ Litfal: 除非你的數據非常非常大 08/30 00:43
→ Litfal: 上半部的方式,在記憶體中做地區與ID配對,最後寫入資料庫 08/30 00:45
推 Litfal: 下半部你先將ID寫入資料庫,後來再更新地區資料,無論怎麼 08/30 00:48
→ Litfal: 實作,都會至少多一次資料庫操作 08/30 00:49