我很困惑,我该如何解决?我的查询中的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/