C# 实体按匹配项数对搜索结果进行排序
C# Entity sort search result by number of matching items
我正在使用这行代码来检索具有一种或多种匹配成分的所有食谱
recipes = db.Recipes.Where(r => r.Ingredients.Any(i => FilteredsearchString.Contains(i.IngredientName)));
问题在于,这是按匹配项数对检索结果进行排序的。因此,如果我寻找 10 种成分,它可以 return 一份只有其中一种成分的食谱,然后才恰好包含这 10 种成分。
如何return按降序排列包含最匹配成分的食谱?
过滤后的搜索字符串是包含以逗号分隔的成分名称的字符串。
我还没有测试过,但也许你可以尝试以下方法:
var recipes = db.Recipes.Where(r => r.Ingredients
.Any(i => FilteredsearchString.Contains(i.IngredientName)))
.OrderByDescending(x => x.Ingredients
.Count(y => FilteredsearchString.Contains(y.IngredientName));
我正在使用这行代码来检索具有一种或多种匹配成分的所有食谱
recipes = db.Recipes.Where(r => r.Ingredients.Any(i => FilteredsearchString.Contains(i.IngredientName)));
问题在于,这是按匹配项数对检索结果进行排序的。因此,如果我寻找 10 种成分,它可以 return 一份只有其中一种成分的食谱,然后才恰好包含这 10 种成分。
如何return按降序排列包含最匹配成分的食谱?
过滤后的搜索字符串是包含以逗号分隔的成分名称的字符串。
我还没有测试过,但也许你可以尝试以下方法:
var recipes = db.Recipes.Where(r => r.Ingredients
.Any(i => FilteredsearchString.Contains(i.IngredientName)))
.OrderByDescending(x => x.Ingredients
.Count(y => FilteredsearchString.Contains(y.IngredientName));