tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^3: dataTable 2 配列
投稿日: 2013/06/17(Mon) 10:16
投稿者魔界の仮面弁士
> 配列に変換した後、「各要素の平均」を
> 求めたいです。コードで書くと以下のようになると思います。

平均を得るだけならば、DataTable 単体でも行えますよ。


'---「Compute メソッド」を使う方法
Dim dt As New DataTable()

'文字列だと平均を得られないので、実数型として定義しておく
dt.Columns.Add("COL1", GetType(Decimal))
dt.Columns.Add("COL2", GetType(Decimal))

dt.Rows.Add(0, 2)
dt.Rows.Add(1, 3)
dt.Rows.Add(2, 6)

MsgBox("Average: " & CStr(dt.Compute("AVG(COL2)", "")))


'---「式列」を使う方法
Dim dt As New DataTable()

'文字列だと平均を得られないので、実数型にしておく
dt.Columns.Add("COL1", GetType(Double))
dt.Columns.Add("COL2", GetType(Double))

dt.Rows.Add(0, 2)
dt.Rows.Add(1, 3)
dt.Rows.Add(2, 6)

dt.Columns.Add("Col2Avg", GetType(Double), "AVG(COL2)")

MsgBox("Average: " & CStr(dt.Rows(0)("Col2Avg")))


'--- 元の DataTable の定義を変更したくない場合
Dim dt As New DataTable()
dt.Columns.Add()
dt.Columns.Add()

dt.Rows.Add(0, 2)
dt.Rows.Add(1, 3)
dt.Rows.Add(2, 6)

'一時的に、実数型に変換するための「式列」を用意する
dt.Columns.Add("Column3", GetType(Single), "CONVERT(Column2, 'System.Single')")
'Computeメソッドで集計する
MsgBox("Average: " & CStr(dt.Compute("AVG(Column3)", "")))
'一時列を削除して元に戻す
dt.Columns.Remove(dt.Columns("Column3"))
'--------------------------------


> VB2010にアップデートしてLINQ?
Linq は 2008 から使えますし、最新版は 2012 ですが
あえてその中間をとっての 2010 選択でしょうか。


# Visual Studio 2013 の足音も聞こえてきたようで。
# http://softwareengineeringplatform.com/articles/visual-studio-2013-at-teched-2013/

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。