web-dev-qa-db-ja.com

ラムダクエリで上位5つの値を取得する

ここに私のコードがあります、

rptAnnouncement.DataSource = DbContext.Announcements
    .Where(n => n.Expire_Date.Value.Date >= DateTime.Now.Date)
    .ToList();  

ラムダを使用してデータベースからアナウンスデータを取得し、このデータをASP.NETリピーター(rptAnnouncement)にバインドします。

しかし、このクエリはすべてのデータを返します。MSSQL Serverのselect top 5 * from databaseのような上位5(最初の5)レコードを取得したいだけです。

19
zey

OrderBy() を使用して要素を並べ替え、次に Take() を使用して最初の5つを取得できます。

_rptAnnouncement.DataSource = DbContext.Announcements
    .Where(n => n.Expire_Date.Value.Date >= DateTime.Now.Date)
    .OrderBy(n => n.Expire_Date.Value.Date)
    .Take(5);
_

  • OrderByDescending() を使用して降順で並べ替えることができます
  • ToList() を呼び出してから Take() を呼び出すと、すべてのアイテムが取得され、取得するだけでなく上位5つが取得されますトップ5。
49
Daniel Imms

トップ5のみが必要な場合は、以下を使用できます。

rptAnnouncement.DataSource = DbContext.Announcements.Where(n => n.Expire_Date.Value.Date >= DateTime.Now.Date).Take(5).ToList();

詳細はこちら

http://msdn.Microsoft.com/en-us/library/bb503062.aspx

5
ashutosh raina

LINQTake(n)を使用するだけです

rptAnnouncement.DataSource = DbContext.Announcements
                                      .Where(n => n.Expire_Date.Value.Date >= DateTime.Now.Date)
                                      .Take(5).ToList();
2
Praveen Nambiar