我很难过,我怎么解决这个问题?我查询中的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();
Run Code Online (Sandbox Code Playgroud)
您可以尝试显式声明结果的类型。
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}
Run Code Online (Sandbox Code Playgroud)
由于一切都很好且明确,因此应该可以正确输入。但是,人们会认为转换 paj.DateAvailable 就足够了,因此您的情况可能还有更多内容。