2017-02-23 56 views
0

我正在构建一个网站,主要是指向公司内部网的不同页面和表单的链接集合。所有链接都记录在SQL数据库中,该数据库具有特定链接的表格,连接到这些链接的标签以及链接的使用频率。链接使用时,它都会在包含通过使用流行排序搜索结果 - C#ASP.NET

  • 每一行
  • 链接的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); 
    } 

结果被传递到包含各个表的列表的模型中。我只是试图找出一种方式,根据哪个链接在表格中记录的点击次数最多来对结果进行排序。

回答

0

您需要一个群组。我不清楚你的确切的实体/表格结构,所以你可能需要推断一个确切的解决方案。一般情况下,它会像:

var links = db.LinkClicks 
    .GroupBy(m => m.Link) 
    .OrderByDescending(o => o.Count) 
    .Select(m => m.Key); 

GroupBy回报基本上是由你的分组由酒店键列表的列表。因此,您可以按每个子列表的数量排序,以便根据该特定链接的“流行度”(您正在分组的内容)进行排序。然后,Select可用于将它简化为链接的简单列表,现在将按每个链接的点击次数排序。

0

返回基于an aggregate function的链接。他们已经被排序。

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

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