C# LINQ、左联接、引发异常…失败,因为具体化的值为null

C# LINQ、左联接、引发异常…失败,因为具体化的值为null,c#,linq,C#,Linq,我被难住了,我该怎么解决?查询中的ProductAvailability表没有找到的每个产品的记录,每次运行时都会抛出以下错误 转换为值类型“DateTime”失败,因为具体化的值为null。结果类型的泛型参数或查询必须使用可为空的类型 如何修复此错误?我尝试将paj.DateAvailable转换为(DateTime?),并检查null,但这似乎无法解决问题。嗯 这是我的问题。有什么想法吗 var query = (from p in entities.Products

我被难住了,我该怎么解决?查询中的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();

您可以尝试显式声明结果的类型

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就足够了,因此您的情况可能会更糟。

Linq to Entities?还有,ps?细节很重要!