我很难过,我怎么解决这个问题?我查询中的ProductAvailability表没有找到每个产品的记录,每次运行时都会抛出以下错误。
转换为值类型'DateTime'失败,因为具体化值为null。结果类型的泛型参数或查询必须使用可空类型。
如何修复此错误?我尝试将paj.DateAvailable转换为(DateTime?)并检查null,但似乎没有解决问题。嗯?
这是我的查询。有什么想法吗?
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 :(得分:1)
您可以尝试明确声明结果的类型。
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}
由于事情很好而且明确,所以这应该是正确的输入。但是,人们会认为投射paj.DateAvailable就足够了,所以可能会有更多的情况发生。