使用-C#ASP.NET按流行程度对搜索结果排序

使用-C#ASP.NET按流行程度对搜索结果排序,c#,sql-server,asp.net-mvc,linq,search,C#,Sql Server,Asp.net Mvc,Linq,Search,我正在建立一个网站,它主要是一个链接的集合,指向公司内部网的不同页面和表单。所有链接都记录在一个SQL数据库中,该数据库包含特定链接的表、连接到这些链接的标记以及链接的使用频率。每次使用链接时,它都会在最后一个表中创建一行,其中包含 每行的id 与包含链接标题和标记的表相关的链接id 实际链接 单击的日期 我试图找出一种方法,根据跟踪数据库中的条目数对结果进行排序。我目前可以搜索数据库,但它只是按结果在数据库中的顺序列出结果 public ActionResult Index(string

我正在建立一个网站,它主要是一个链接的集合,指向公司内部网的不同页面和表单。所有链接都记录在一个SQL数据库中,该数据库包含特定链接的表、连接到这些链接的标记以及链接的使用频率。每次使用链接时,它都会在最后一个表中创建一行,其中包含

  • 每行的id
  • 与包含链接标题和标记的表相关的链接id
  • 实际链接
  • 单击的日期
我试图找出一种方法,根据跟踪数据库中的条目数对结果进行排序。我目前可以搜索数据库,但它只是按结果在数据库中的顺序列出结果

public ActionResult Index(string method = null)
    {
        var model = new SearchResults()
        {
            ContentLink = database.ContentLinks.Where(x => x.Title.ToLower().Contains(method) && method != "").ToList(),
            ContentTag = database.ContentTags.Where(x => x.Tag.ToLower() == method).ToList()
        };

        return View(model);
    }

结果被传递到一个模型中,该模型包含每个表的列表。我只是想找出一种方法,根据表中记录的点击次数最多的链接对结果进行排序。

返回基于的链接。他们已经被分类了

SELECT links,
       COUNT(links) as LinkCount
FROM   youtable
GROUP  BY links
ORDER  BY COUNT(links) desc

如果您实际上不需要计数,可以删除“计数(链接)为链接计数”行。

您需要一个分组依据。我不清楚您的确切实体/表结构,因此您可能需要推断出一个确切的解决方案。一般来说,情况会是:

var links = db.LinkClicks
    .GroupBy(m => m.Link)
    .OrderByDescending(o => o.Count)
    .Select(m => m.Key);
GroupBy
基本上返回由分组依据的属性键入的列表列表。因此,您可以按每个子列表的计数排序,以按特定链接的“流行程度”(您分组的依据)排序。然后,可以使用
Select
将其合并成一个简单的链接列表,该列表现在将按每个链接的点击次数排序