の列の最小値と最大値を決定するメソッドがありますDataTable
:
public void GetMinMaxRange( DataTable data, string valueColumnName )
{
var min = data.AsEnumerable().Min(m => m.Field<double>(valueColumnName));
var max = data.AsEnumerable().Max(m => m.Field<double>(valueColumnName));
}
これを次のようにリファクタリングしたい:
public void GetMinMaxRange( DataTable data, string valueColumnName )
{
DataColumn column = data.Columns[valueColumnName];
var min = data.AsEnumerable().Min(m => m.Field<column.DataType>(valueColumnName));
var max = data.AsEnumerable().Max(m => m.Field<column.DataType>(valueColumnName));
}
データ型を決定し、ハードコーディングの代わりに使用する必要がありますm.Field<double>
。これを行う方法?
UPDATE最小値と最大値の差を計算したい 理由について
public static double/decimal/int GetMinMaxRange<T>(DataTable data,
string valueColumnName) where T : IComparable<T>
{
DataColumn column = data.Columns[valueColumnName];
var min = data.AsEnumerable().Min(m => m.Field<T>(valueColumnName));
var max = data.AsEnumerable().Max(m => m.Field<T>(valueColumnName)); ;
return max - min;
}