2012-02-17 13 views
7

ではありません。ダブルは、私はLINQでこれをやっているNULL可能タイプ

 // let use Linq 
     var DateMarket = from p in Orders_From_CRD.AsEnumerable() 
         where p.Field<Double>("Fill_ID") != null 
         select OrderTable.Rows.Add(p.Field<DateTime>("trade_date"), p.Field<string>("ticker"), 
         p.Field<Double>("EXEC_QTY"), p.Field<Double>("EXEC_PRICE")); 

     TradeTable = DateMarket.CopyToDataTable(); 

しかし、私はエラーが私

Cannot cast DBNull.Value to type 'System.Double'. Please use a nullable type. 

に伝えるがありますが、この場合にはNULL可能タイプをキャストする方法を知っていますか?

ダブルがNULL値を割り当てることができない、私は<Double?>を試してみましたが、私は、デフォルトでは'Specified cast is not valid.'

+0

データベーステーブルの列の種類を確認しました: – phoog

+0

」は解決策でした。間違ったキャストを使用していたため、うまくいきませんでした。あなたの助けをありがとう –

答えて

3

を得ました。この問題を解決するには、null可能な型を使用します。あなたが使用することができ

 var DateMarket = from p in Orders_From_CRD.AsEnumerable() 
        where p.Field<Double?>("Fill_ID") != null 
        select OrderTable.Rows.Add(p.Field<DateTime>("trade_date"), p.Field<string>("ticker"), 
        p.Field<Double?>("EXEC_QTY"), p.Field<Double?>("EXEC_PRICE")); 

    TradeTable = DateMarket.CopyToDataTable(); 
+0

'Fill_ID'は、例えば' EXEC_PRICE'よりも 'NULL'である可能性が低いです(例えば、塗りつぶされていないフィル)。 – dasblinkenlight

+0

私は同じ治療が必要かもしれないと仮定してそこに2番目のダブルがあります... – Chris

+0

私は答えを編集:) – Akrem

5

p.Field<Double?> 

T?は、null値を許容値型のラッパーNullable<T>の省略形です

はこれを試してみてください。

Double? 

はあなたが必要とするnull許容のDouble

+0

私はそれを試して、私は '指定されたキャストは有効ではありません。 –

4

は、型を使用し

? Double以外の値を `double? 'にキャストしようとすると、"指定されたキャストは無効です "というエラーが発生します。型は、IEEE単精度または小数、または整数型のいずれかです。
関連する問題