2012-02-17 46 views
7

tôi đang làm điều này với LINQ:đúp không phải là một loại nullable

 // 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(); 

Nhưng tôi có một lỗi nói với tôi

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

Bạn có biết làm thế nào để đúc loại nullable trong trường hợp này?

tôi đã cố gắng <Double?> và tôi đã nhận 'Specified cast is not valid.'

+0

Bạn đã kiểm tra kiểu của cột trong bảng cơ sở dữ liệu? "Cast được chỉ định không hợp lệ" sẽ là lỗi nếu bạn cố gắng truyền một giá trị không gấp đôi thành 'double?'. Loại có thể là IEEE đơn hoặc thập phân hoặc một số loại nguyên. – phoog

+0

'' là giải pháp, tôi đã không làm việc vì tôi đã sử dụng sai dàn diễn viên. Cảm ơn sự giúp đỡ của bạn –

Trả lời

3

theo mặc định, đôi không có thể được gán giá trị null. Giải pháp cho vấn đề này là sử dụng một kiểu nullable: Double?

thử điều này:

 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' ít có khả năng là' NULL' hơn, ví dụ: 'EXEC_PRICE' (ví dụ: khi điền chưa điền). – dasblinkenlight

+0

Có một đôi thứ hai trong đó mà tôi giả định có thể cần phải điều trị tương tự ... – Chris

+0

Tôi chỉnh sửa câu trả lời, :) – Akrem

5

Bạn có thể sử dụng:

p.Field<Double?> 

T? là viết tắt cho Nullable<T>, một wrapper cho một loại giá trị cho phép giá trị null.

+0

Tôi đã thử điều đó và tôi đã nhận 'Diễn viên được chỉ định không hợp lệ'. –

4

Sử dụng các loại:

Double? 

khi bạn cần một nullable đôi

Các vấn đề liên quan