在ASP.NET MVC中处理联接表时出现Null异常



我有productProductsizeSize实体。

Productsize实体包含ProductIDSizeID,它们是ProductSize实体的外键。我正在商店页面中添加尺寸过滤器。尺寸ID列表来自视图。我正在检查Productsize实体中是否存在尺寸ID,并仅显示该产品。如果条件显示空异常

List<int> sizeIDs = !string.IsNullOrEmpty(SizeIds) ? SizeIds.Split(',').Select(x => int.Parse(x)).ToList() : new List<int>();
var products = db.Products.ToList();
if (sizeIDs.Any())
{
products = products.Where(x=>sizeIDs.Contains(x.ProductSizes.FirstOrDefault()
.SizeID)).ToList();
}    

try:

List<int> sizeIDs = !string.IsNullOrEmpty(SizeIds) ? SizeIds.Split(',').Select(x => int.Parse(x)).ToList() : new List<int>();
var products = db.Products.ToList();
if (sizeIDs.Any())
{
products = products.Where(x=>sizeIDs.Contains(x.ProductSizes.FirstOrDefault()?
.SizeID)).ToList();
}    

.FirstOrDefault((.SizeID

或:

List<int> sizeIDs = !string.IsNullOrEmpty(SizeIds) ? SizeIds.Split(',').Select(x => int.Parse(x)).ToList() : new List<int>();
var products = db.Products.ToList();
if (sizeIDs.Any())
{
products = products.Where(x=>x.ProductSizes.Any() && sizeIDs.Contains(x.ProductSizes.First().SizeID)).ToList();
} 

更新:让我们试试这个查询:

List<int> sizeIDs = !string.IsNullOrEmpty(SizeIds) ? SizeIds.Split(',').Select(x => int.Parse(x)).ToList() : new List<int>();
var products = db.Products.ToList();
if (sizeIDs.Any())
{
products = products.Where(x => x.ProductSizes.Any(s=> sizeIDs.Contains(s.SizeID)) ).ToList();
}   

最新更新