ここに私のコードがあります、
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)レコードを取得したいだけです。
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。トップ5のみが必要な場合は、以下を使用できます。
rptAnnouncement.DataSource = DbContext.Announcements.Where(n => n.Expire_Date.Value.Date >= DateTime.Now.Date).Take(5).ToList();
詳細はこちら
LINQ
でTake(n)
を使用するだけです
rptAnnouncement.DataSource = DbContext.Announcements
.Where(n => n.Expire_Date.Value.Date >= DateTime.Now.Date)
.Take(5).ToList();