c# - 按元素选择最重复的项目

标签 c# algorithm linq logic

我正在尝试获取 3 篇相关文章,这些文章具有与主要文章相同的大多数标签。 我有这个数据库结构:

StructDB

当我获取主要文章时,我会获取与该文章相关的标签。然后,我将文章的 IDArticle 和 TagList 传递给函数以获取相关的 3 篇文章。
在文章和标签之间充当粘合剂的列表是 ArticoloTag,我认为这是一个列表,用于检查具有最多重复标签的文章。
显然我认为在服务器端用 c# 开发这个算法更好。如何使用 linq 执行此操作?
感谢帮助

最佳答案

为了找到具有最多共同标签的前 3 篇文章,您可以使用 ArticoloTag 并将其加入 IdTag

linq 看起来像这样:

ArticoloTag.Where (a=>a.IdArticolo== mainArticleId).Join(ArticoloTag, a=>a.IdTag, a=>a.IdTag, (a,b)=> b.IdArticolo).GroupBy(a=>a.IdArticolo).OrderBy(g=>g.Count()).Select(g => g.Key).Take(3)

这将取回您的 3 IdArticle。

您可以向 Articolo 表添加一个连接以获取实际的文章

关于c# - 按元素选择最重复的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41953601/

相关文章:

c# - Asp.Net Core 和脚手架

c# - 创建两个具有依赖关系的 Nuget 包

c# - 读取 XML 文件并创建与 XML 内容匹配的对象列表

c# - 嵌套的 "Any"在动态 linq 中不起作用

c# - 如何将数据从本地PC发送到Google-app-engine应用程序?

c# - 如何使用适用于 .NET 的 Google 客户端 API 获取已解码的 Play Integrity API token

algorithm - 模糊 .substring 文本匹配函数

r - 编写一个程序,从以 10 为底的数字 x 到 R 中以 16 为底的数字的向量

c# - 线性搜索问题

c# - 将交错数组转换为 IEnumerable<KeyValuePair<int,int>>?