2011-07-04 11 views
0

は私が実装しようとしています:DataTableの列の型を変換する方法はありますか。

dtGroupedBy.Compute("sum(POWER)",dvv.RowFilter); 

それはエラーの結果:

Invalid usage of aggregate function Sum() and Type: String.

がどのように我々は、その列の型に変換します?

+0

のように列の合計を計算することができ、あなたがエラー –

+0

@Tarunの解釈だ、あなたが取得している正確なエラーをしないで投稿することができ、私は(このエラーを取得しています集計関数Sum()とType:Stringの使用法が無効です。 –

+0

@Deepakソリューションの問題を解決しましたか? – Max

答えて

1

計算方法は、式をサポートし、彼らはあなたが表現の内部で使用することができCONVERT functionをサポートしています。例えば

、あなたは

MyDataTable.Compute("Sum(Convert(your column name, 'Data Type'))") 
+4

あなたのコードを使用することはできません...例外: "集合引数の構文エラー:可能な '子'修飾子を持つ単一の列引数が必要です。" – Max

1

DataTableの作成方法によって異なります。 SQLからまっすぐな場合は、SQL自体を変更して、POWER列をフェッチする際に変換されるようにしてください。

ただし、値が常に最初の数値である必要がある場合は、データベーススキーマを再訪することを強くお勧めします。可能な場合は、列の種類を変更する方がきれいです。

+0

実際には、私はXML形式のインターネットを介して特定のリンクから取得しているデータからこのテーブルを埋めています –

+0

@Syed:シリアル化されたデータテーブルですか?それとも、それはあなた自身を変換している任意のXMLですか? –

+0

このデータをバイト単位で取得し、それを文字列形式でエンコードした後、XML形式で保存します –

1

文字列フィールドにSum()集計関数を使用することはできません。

あなたが

  • は数値フィールドであるためにあなたのデシベル (またはスキーマ)に、既存の列項目を再定義しないことができます。(推奨)
  • 2つの物事がデータ上System.Int32変換を行うがあります集計関数に渡します。 はあなたが行うことができ、次の

dtGroupedBy.Compute("sum(CONVERT(" + POWER + ",'System.Int32'))",dvv.RowFilter);

関連する問題