如何使用Linq或Lambda按C#MongoDB的字符串出现次数排序

如何使用Linq或Lambda按C#MongoDB的字符串出现次数排序,c#,linq,mongodb,lambda,C#,Linq,Mongodb,Lambda,我有一节这样的课 [Serializable] public class CatalogData { public CatalogData(); public BsonObjectId _id { get; set; } [BsonIgnoreIfNull] public string CatalogId { get; set; } public string CatalogName { get; set; } public List<Cat

我有一节这样的课

[Serializable]
public class CatalogData
{
    public CatalogData();
    public BsonObjectId _id { get; set; }
    [BsonIgnoreIfNull]
    public string CatalogId { get; set; }
    public string CatalogName { get; set; }
    public List<CatalogPageData> Pages { get; set; }
}

[Serializable]
public class CatalogPageData
{
    public CatalogPageData();

    public string _id { get; set; }
    [BsonIgnoreIfNull]
    public List<string> Keywords { get; set; }
}
结果应该是:

CatalogData[3]
CatalogData[0]
CatalogData[2]
CatalogData[1]
因为CatalogData[3]=4(牛奶3次,大豆1次)中listKeywords的出现率,CatalogData[0]=3,CatalogData[2]=2,CatalogData[1]=1

我有没有办法得到那样的结果
对不起,我的英语不好

我认为如果不使用C#进行最后排序,就没有办法完成这项工作。但是,您正在编写的查询似乎最好使用全文搜索引擎。MangoDB中有一个还没有准备好生产,或者你可以用“CyrasQuest/SoRR”之类的方法来考虑,比如“做C排序中的最后排序”。你的意思是在得到所有结果后对它排序,或者用自定义的OrthBube函数排序它。如果您的意思是按自定义.OrderBy函数排序,请您给我一些参考,因为当我尝试只返回总计数的int的函数时,出现了一个错误“无法确定表达式的序列化信息”…请在将集合返回给客户端后进行排序。好的,谢谢您的帮助。我想没有别的办法了。想了解更多关于ElasticSearch/Solr的建议吗
CatalogData[0].Pages[0].Keywords = {"meat", "milk", "sauce", "soy", "fish"}
CatalogData[0].Pages[1].Keywords = {"meat", "fish"}
CatalogData[0].Pages[2].Keywords = {"sauce", "fruit", "milk"}

CatalogData[1].Pages[0].Keywords = {"fish"}
CatalogData[1].Pages[1].Keywords = {"meat"}

CatalogData[2].Pages[0].Keywords = {"milk", "soy"}
CatalogData[2].Pages[1].Keywords = {"sauce", "soy"}

CatalogData[3].Pages[0].Keywords = {"meat", "milk", "fish"}
CatalogData[3].Pages[1].Keywords = {"meat", "milk", "soy", "fish"}
CatalogData[3].Pages[2].Keywords = {"meat", "milk", "sauce""fish"}

listKeywords = {"meat", "soy"}
CatalogData[3]
CatalogData[0]
CatalogData[2]
CatalogData[1]