タイトル : 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/ |