我有product
、Productsize
和Size
实体。
Productsize
实体包含ProductID
和SizeID
,它们是Product
和Size
实体的外键。我正在商店页面中添加尺寸过滤器。尺寸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();
}