21

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

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

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

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

4

3 に答える 3

55

を使用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 つを取得します。
于 2013-03-30T07:55:13.570 に答える
5

トップ 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

于 2013-03-30T07:54:59.130 に答える
2

Take(n)で使うだけLINQ

rptAnnouncement.DataSource = DbContext.Announcements
                                      .Where(n => n.Expire_Date.Value.Date >= DateTime.Now.Date)
                                      .Take(5).ToList();
于 2013-03-30T07:56:30.180 に答える