2017-02-23 10 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 

あなたが実際に数を必要としない場合は、ライン「LinkCountとしてCOUNT(リンク)」ドロップすることができます。

関連する問題