要实现该功能,可以使用递归函数来搜索类别及其所有子类别。以下是示例代码:
public IActionResult SearchCategory(int categoryId, string searchString) { var allCategories = _context.Categories.ToList(); var categoryIds = GetCategoryIds(categoryId, allCategories);
var searchResults = _context.Products
.Include(p => p.Category)
.Where(p => categoryIds.Contains(p.CategoryId) &&
p.Name.Contains(searchString))
.ToList();
return View(searchResults);
}
private List
var category = allCategories.FirstOrDefault(c => c.Id == categoryId);
if (category != null)
{
categoryIds.Add(category.Id);
if (category.Children?.Count > 0)
{
foreach (var child in category.Children)
{
var childIds = GetCategoryIds(child.Id, allCategories);
categoryIds.AddRange(childIds);
}
}
}
return categoryIds;
}
在这个示例中,我们首先获取所有的类别,然后使用递归函数GetCategoryIds来获取categoryId及其所有子类别的ID。之后,我们使用获取到的categoryIds来过滤搜索结果。
请注意,这个示例代码只是基础的示例,在实际中可能需要根据具体情况进行更改和优化。