LinqDataSource 雖方便,但無法直接限制繫結筆數(如「只取最新 1 筆」)。解法是在後置程式碼以 LINQ to SQL 查詢並 Take(N),再手動指派給 DataList.DataSource 並呼叫 DataBind()。
var ctx = new PEAEWebSiteDataContext();
// 校園資訊:最新 1 筆
var campus = ctx.tb_News.Where(n => n.cname == "校園資訊")
.OrderByDescending(n => n.issuedate)
.Take(1);
DataList1.DataSource = campus;
DataList1.DataBind();
// 活動安排:最新 1 筆
var activity = ctx.tb_News.Where(n => n.cname == "活動安排")
.OrderByDescending(n => n.issuedate)
.Take(1);
DataList2.DataSource = activity;
DataList2.DataBind();
OrderByDescending 確保取得最新資料Take(1) 於 SQL 轉譯為 TOP 1,效能佳LinqDataSource 的 Selecting 事件複雜邏輯,程式碼更直觀可控此模式適用於任何需「固定筆數、排序、分組」的繁雜繫結場景,建議集中在 Page_Load 或專屬 BindData() 方法中,維護性佳。