2012-02-17 2 views
7

Я делаю это с помощью LINQ:Двойной не обнуляемым типа

 // 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. 

Вы знаете, как бросить обнуляемого тип в данном случае?

Я попытался <Double?> и я получил 'Specified cast is not valid.'

+0

Вы проверили тип столбца в таблице базы данных? «Указанный приведение недействительно» будет ошибкой, если вы попытаетесь присвоить недвойственное значение «double?». Тип может быть IEEE одиночным или десятичным или некоторым целым типом. – phoog

+0

'' было решением, я не работал, потому что использовал неправильный перевод. Спасибо за вашу помощь. –

ответ

3

по умолчанию, дважды не могут быть присвоены нулевые значения. Решением этой проблемы является использование типа с нулевым значением: Double?

попробовать это:

 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' с меньшей вероятностью будет' NULL', чем, скажем, 'EXEC_PRICE' (например, на незаполненном заполнении). – dasblinkenlight

+0

Есть второй двойник, который, как я полагаю, может нуждаться в том же лечении ... – Chris

+0

Я редактирую ответ, :) – Akrem

5

Вы могли бы использовать:

p.Field<Double?> 

T? представляет собой сокращенную Nullable<T>, обертка для типа значения, что позволяет нулевые значения.

+0

Я пробовал это, и я получил «Указанный приказ недействителен». –

4

Используйте тип:

Double? 

, когда вам нужно обнуляемым двойной

Смежные вопросы