1

データテーブルから値 (すべて bigint) を取得し、それらに数学関数を適用できますか? たとえば、次のように言いましょう (すべてのレコード 1):

Column 1 = 10;
Column 2 = 20;
Column 3 = 5;
Column 4 = 60;

今、私はそれらから数学の方程式を作ることができますか?(列 1 + 列 2)-(列 3 * 列 4)

おそらく配列を使用して、これは可能ですか???

みんなありがとう

4

2 に答える 2

2

このトリックを使用して、すべての行の結果を取得できます。

//Suppose you create your DataTable like this:
var dt = new DataTable();
dt.Columns.Add("Col1",typeof(int));
dt.Columns.Add("Col2",typeof(int));
dt.Columns.Add("Col3",typeof(int));
dt.Columns.Add("Col4",typeof(int));
//Add some rows to test
dt.Rows.Add(1, 2, 3, 4);
dt.Rows.Add(2, 2, 2, 2);
dt.Rows.Add(4, 2, 3, 3);

//Use this method to extract the result, remember that it's just demo
private List<int> GetResultColumn(DataTable dt){
  dt.Columns.Add("Result",typeof(int));
  dt.Columns["Result"].Expression = "(Col1+Col2)-(Col3*Col4)";
  List<int> result = dt.AsEnumerable().Select(row => row.Field<int>("Result")).ToList();
  dt.Columns.Remove("Result");
  return result;
}
//Use it
var result = GetResultColumn(dt);
//output  {0, -9, 0, -3}

いつでも行をループして、次のようなより標準的な方法で実行できます。

var result = dt.AsEnumerable()
               .Select(row=> row.Field<int>("Col1")+row.Field<int>("Col2") 
                            -row.Field<int>("Col3")*row.Field<int>("Col4"))
               .ToList();//Remove ToList() if you want

アップデート:

var newestRow = dt.AsEnumerable().Max(row=>row.Field<int>("ID"));
var result = newestRow.Field<int>("Col1") + newestRow.Field<int>("Col2") 
             -newestRow.Field<int>("Col3")* newestRow.Field<int>("Col4");
于 2013-10-12T17:33:02.453 に答える