在 ASP.NET MVC 中处理连接表时出现空异常
Null exception while working with joining tables in ASP.NET MVC
我有 product
、Productsize
和 Size
个实体。
Productsize
实体包含ProductID
和SizeID
,它们是Product
和Size
实体的外键。我在商店页面中添加尺寸过滤器。尺寸 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();
}
我有 product
、Productsize
和 Size
个实体。
Productsize
实体包含ProductID
和SizeID
,它们是Product
和Size
实体的外键。我在商店页面中添加尺寸过滤器。尺寸 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();
}