我正在尝试创建具有很多选项(字符串输入,选择输入...)的搜索过滤器。如果categoryId大于0,我需要按类别过滤标签,如果categoryId等于0,则返回具有所有相关类别的所有标签(或者不对搜索应用类别选项)。但是我的代码在两种情况下都不会返回任何类别,也不会给我任何错误。我在互联网上发现了许多示例,这些示例仅显示一个字符串输入是如何工作的。
IQueryable<Tag> tags = _context.Tag
.Where(s => EF.Functions.Like(s.Name, "%" + name + "%"))
.Where(s => EF.Functions.Like(s.Description, "%" + description + "%"))
.Include(s => s.Value)
.Include(s => s.Period);
if (categoryId > 0)
{
tags.Include(s => s.Category).Where(s => s.Category.CategoryId == categoryId);
}
else
{
tags.Include(s => s.Category);
}
有人可以解释为什么我的代码不起作用吗?以及如何实现此功能?谢谢。
答案 0 :(得分:0)
正确的代码是:
IQueryable<Tag> tags = _context.Tag
.Where(s => EF.Functions.Like(s.Name, "%" + name + "%"))
.Where(s => EF.Functions.Like(s.Description, "%" + description + "%"))
.Include(s => s.Value)
.Include(s => s.Period);
if (categoryId > 0)
{
tags = tags.Include(s => s.Category).Where(s => s.Category.CategoryId == categoryId);
}
else
{
tags = tags.Include(s => s.Category);
}