在 ASP.NET MVC 中处理连接表时出现空异常

Null exception while working with joining tables in ASP.NET MVC

我有 productProductsizeSize 个实体。

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

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();
}    

尝试:

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();
            }