DataTableの特定の列データを取得する〜VB2008

  • 2012.12.21 Friday
  • 12:50

DataTableはRowであれば、ItemArrayでレコード(行)データを一括で取得できる。
 
Dim vRow() As Object = dTable.Rows(n).ItemArray

しかし、私の知る限りでは、特定の列(Column)に対して、ItemArrayのようなことをするものはないようだ。
レコードが行方向に追加されていくので、もっともだと思う。


なので、特定の列を取得するなら、Row方向にグルグル回して取得するしか方法は無いと考える。

一番単純に書くならば、
 
Dim vCol() As Object = New Object(dTable.Rows.Count - 1I) {}
‌ 
For intR As Int32 = 0I To dTable.Rows.Count - 1I
‌ 
    vCol(intR) = dTable.Rows.Item("Value")
‌ 
Next intR

Linqを使って、行数を減らすなら、
 
vCol = (From eRow As DataRow In dTable.Rows _
          Select eRow.Item("Value")).ToArray

といったところだろうか。

ちなみに、データがない(DBNull)もそのまま取得されるので、
必要ない場合はIsDBNullを入れておくとよい。


これと似たような感じで、別のDataTableに列だけ抽出するなら、
 
Dim tView As DataView = dTable.DefaultView
Dim vTable As DataTable = tView.ToTable("NewTable", False, New String() {"Value"})

なんて方法もある

これ以外に何かもっとよい方法があれば教えてください。


参考URL
(.Net)DataTableで集約(グループ化)をしたい

 
コメント
コメントする








    
この記事のトラックバックURL
トラックバック

calendar

S M T W T F S
    123
45678910
11121314151617
18192021222324
25262728293031
<< October 2020 >>

search this site.

よく使う、検索される投稿

categories

■Google AD■

アマゾン

楽天

selected entries

archives

recent comment

recent trackback

profile


※当ブログはリンクフリーですが、 取材や雑誌等で掲載される場合は、事前にお知らせください

others

mobile

qrcode

powered

無料ブログ作成サービス JUGEM