我正在使用这行代码来检索所有具有一个或多个匹配成分的配方
recipes = db.Recipes.Where(r => r.Ingredients.Any(i => FilteredsearchString.Contains(i.IngredientName)));
问题在于,这会按匹配数对检索到的结果进行排序。因此,如果我寻找10种成分,它可以返回一种配方,其中只有一种配方在具有10种成分的配方之前。
如何按降序返回配方中配料最多的食谱?
过滤后的搜索字符串是一个字符串,其中包含以逗号分隔的成分名称。
答案 0 :(得分:1)
我还没有测试过,但可能您可以尝试以下方法:
var recipes = db.Recipes.Where(r => r.Ingredients
.Any(i => FilteredsearchString.Contains(i.IngredientName)))
.OrderByDescending(x => x.Ingredients
.Count(y => FilteredsearchString.Contains(y.IngredientName));