DataTable
は、hereと表示されているように、オブジェクトのリスト(またはより一般的なIEnumerable<T>
)よりもはるかに重いデータ構造です。あなたは、次のようになり、オブジェクトのDataTable
リストを使用を余儀なくされていない場合
ので、使用することができます。
public ObjectType
{
public double Column1 { get; set; }
public double Column2 { get; set; }
public double Column3 { get; set; }
// avoid division by zero, adjust zero comparison threshold as needed
// also adjust returned value on zero
// using C# 6.0 specific syntax. If not available, use get { return } syntax
public double NewCalculatedColumn => Math.Abs(Column3) > 0.0001 ?
(Column1 * Column2)/Column3
: 0.0;
}
あなたはDataTable
としてデータをフェッチする場合であっても、あなたは簡単に変換することができますhereのようにList<ObjectType>
である。
動的で表現できれば、コメントに基づいて、[EDIT]
、外部ライブラリを使用することができます。例えば。 NCalc:
public double NewCalculatedColumn
{
get
{
// you can provide a dynamic expression which contains col1, col2 and col3
//TODO: add exception handling
var e = new Expression($"(col1 * col2)/{col3}");
e.Parameters["col1"] = Column1;
e.Parameters["col2"] = Column2;
e.Parameters["col3"] = Column3;
return e.Evaluate();
}
}
アレイにとどまっているとします。どのように列を識別しますか? doubleの配列、doubleのタプルの配列、または3/4のdoubleメンバを持つオブジェクトの配列ですか、必要な "識別子"(=列名)のマッピング方法はありますか? – dlatikay
Webページを参照してください:https://msdn.microsoft.com/en-us/library/system.data.datacolumn.expression(v=vs.100).aspx – jdweng
index equal-ish列名。例インデックス0 =>カラム1、インデックス1 =>カラム2など – cs0815