2010-11-04 22 views
5

Tôi bị bối rối, làm cách nào để khắc phục sự cố này? Bảng ProductAvailability trong truy vấn của tôi không có bản ghi cho mỗi sản phẩm được tìm thấy và ném lỗi sau mỗi khi tôi chạy nó.LINQ, Tham gia trái phép, ném ngoại lệ ... không thành công vì giá trị vật chất là không có

Loại truyền tới loại giá trị 'Ngày giờ' không thành công do giá trị vật chất là rỗng. Tham số chung của loại kết quả hoặc truy vấn phải sử dụng một loại nullable.

Làm cách nào để khắc phục lỗi này? Tôi đã cố gắng đúc paj.DateAvailable để (DateTime?) Và cũng kiểm tra cho null nhưng điều đó dường như không sửa chữa vấn đề. Hmmm?

Đây là truy vấn của tôi. Bất kỳ ý tưởng?

var query = (from p in entities.Products 
      join pa in entities.ProductAvailabilities on p.ProductId equals pa.ProductId into joinProductAvailabilities 
      from paj in joinProductAvailabilities.DefaultIfEmpty() 
      where ps.IsActive 
      select new { ProductId = p.ProductId, DateAvailable = paj.DateAvailable }).Distinct(); 
+0

LINQ to Entities? Ngoài ra, ps? Thông tin chi tiết là quan trọng! –

Trả lời

1

Bạn có thể thử khai báo rõ ràng loại cho kết quả.

public class MyProductQueryResult 
{ 
    public int ProductId {get;set;} 
    public DateTime? DateAvailable {get;set;} 
} 


from p in entities.Products 
from paj in p.ProductAvailabilities.DefaultIfEmpty() 
select new MyProductQueryResult() 
    {ProductId = p.ProductId, DateAvailable = paj.DateAvailable} 

Vì mọi thứ đều đẹp và rõ ràng, điều này sẽ có quyền nhập. Tuy nhiên, người ta sẽ nghĩ rằng paj.DateAvailable đúc sẽ là đủ, vì vậy có thể có một cái gì đó nhiều hơn để tình hình của bạn.

+0

Cảm ơn giải pháp này! – Kwex

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