使用 - C#ASP.NET

时间:2017-02-23 15:08:13

标签: c# sql-server asp.net-mvc linq search

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

的表中创建一行
  • 每行的ID
  • 链接的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);
    }

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

2 个答案:

答案 0 :(得分:0)

根据an aggregate function返回您的链接。它们已经被分类了。

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

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

答案 1 :(得分:0)

你需要一个小组。我不确定您的确切实体/表格结构,因此您可能需要推断出精确的解决方案。一般来说,它会像:

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

GroupBy基本上返回由您按其分组的属性键入的列表列表。因此,您可以按每个子列表的计数进行排序,以按照"流行度排序"该特定链接(您正在分组的内容)。然后,Select可用于将其合并为一个简单的链接列表,现在将按每个点击次数排序。