我很困惑,我该如何解决?我的查询中的ProductAvailability表没有找到的每个产品的记录,并且每次运行它时都会引发以下错误。



如何解决此错误?我尝试将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就足够了,因此您的情况可能还有更多。

关于c# - LINQ,左联接,引发异常...失败,因为实例化值为null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4098262/

10-09 20:00