C#实体按匹配项的数量排序搜索结果

时间:2017-12-14 12:02:47

标签: c# search entity

我正在使用这行代码来检索所有具有一个或多个匹配成分的配方

recipes = db.Recipes.Where(r => r.Ingredients.Any(i => FilteredsearchString.Contains(i.Ingredi‌​entName))); 

问题在于,这会按匹配数对检索到的结果进行排序。因此,如果我寻找10种成分,它可以返回一种配方,其中只有一种配方在具有10种成分的配方之前。

如何按降序返回配方中配料最多的食谱?

过滤后的搜索字符串是一个字符串,其中包含以逗号分隔的成分名称。

1 个答案:

答案 0 :(得分:1)

我还没有测试过,但可能您可以尝试以下方法:

var recipes = db.Recipes.Where(r => r.Ingredients
    .Any(i => FilteredsearchString.Contains(i.Ingredi‌​entName)))
    .OrderByDescending(x => x.Ingredients
        .Count(y => FilteredsearchString.Contains(y.IngredientName));