2

データ テーブルがあり、列に int 値が含まれています。列にデータ型を指定していません。以下を実行すると。

object sum = dttest.Compute("sum(Value)", "");

エラーを下回っています。

集計関数 Sum() およびタイプ: 文字列の無効な使用法。

そして、列の値を int に変換してみました

object sum = dttest.Compute("sum(Convert(Value, 'System.Int32'))","");

再び私は別のエラーが発生しています

集計引数の構文エラー: 可能性のある '子' 修飾子を持つ単一の列引数が必要です。

列のデータ型を指定すると、最初のコードは正しい値を返します。しかし、私の場合、列のデータ型を指定できません。解決策を持っている人はいますか?

4

4 に答える 4

1

試す

object sum = dttest.Compute("Sum(Value)", "[Value] IS NOT NULL");

サンプルコード

    static DataTable GetTable()
    {
        DataTable table = new DataTable();
        table.Columns.Add("Value", typeof(int));
        table.Columns.Add("Name", typeof(string));
        table.Rows.Add(null, "a");
        table.Rows.Add(50, "a");
        table.Rows.Add(10, "a");
        table.Rows.Add(21, "b");
        table.Rows.Add(100, "b");
        return table;
    }
    static void Main(string[] args)
    {
        DataTable dt =GetTable();
        var str = dt.Compute("Sum(Value)", "Name='a' and Value is not null");
    }

Convert で Sum を呼び出すことはできませんが、以下で試すことができます

DataTable dt =GetTable();
dt.Columns.Add("temp", typeof(int), "Convert(Value, 'System.Int32')");
var str = dt.Compute("Sum(temp)", "Name='a' and Value is not null");
于 2013-06-06T06:42:36.407 に答える
0

プログラムが文字列として宣言されたデータテーブル列を合計しようとすると、このエラーが発生します。
以下のコードを使用して、文字列列の計算操作を行います。

dtTable.Compute("Sum(Convert(" + col_Name + ", 'System.Int32')",""); 
于 2017-07-26T10:28:08.383 に答える