我有带有食谱的表格和带有食谱类别的表格。另一个表中有不同类型的类别。我有类别的可选参数,我的表和 linq 选择看起来像:
表格:
RECIPE
recipeId title
RECIPE CATEGORIES
recipeCategoryId recipeId categoryId categoryTypeId
var result = from r in context.Recipes
join c in context.RecipeCategories on r.recipeId equals c.recipeId
where (nutritionStyleId == 0 || c.categoryId == nutritionStyleId )
&& (courseId == 0 || c.categoryId == courseId)
select new
{
r.recipeId,
r.title
};
您只能选择一种类型的类别(通过 courseId 或通过 NutritionStyleId 或无(如果 NutritionStyleId 和 courseId == 0)。问题是当 NutritionStyleId 和 courseId 为 0 时,选择返回我所有的食谱,但乘以数量categoryTypeId在 RECIPE CATEGORIES 表中。因此,如果一个食谱指定了多个 categoryType,则我的选择是错误的。
那么如何进行条件连接或其他操作,所以当我不想按recipeCategory 搜索时,不会有任何重复项(重复的标题或recipeId)
场景是我可以通过 NutritionStyleId 或 courseId 或无搜索(返回所有食谱)