最近透過 DbContext 使用 LINQ 取回資料後,
想要為該資料加上流水號要如何處理呢?
當取回資料後,要將它顯示在畫面上時,常常需要有流水號。
這時除了在SQL中使用 Row_Number 外,
我們可以透過 LINQ 的 Select - Indexed 哦!如下,
//BeaconAppEntities 是 DbContext
using (var db = new BeaconAppEntities())
{
var searchData = db.IOT_USER_RECIEVE_INFO
.Where(r => r.CRE_DATE == FilterDate
&& (r.CATEGORY_ID == CategoryId.ToString()
|| CategoryId == 0
))
.GroupBy(g => g.USER_ID)
.Select((g) => new
{
UserId = g.Key,
MinTime = g.Min(u => u.CRE_DTE),
MaxTime = g.Max(u => u.CRE_DTE),
Num = g.Min(u => u.IDENT_NUM)
})
.OrderBy(s => s.MinTime);
// 需要將 EF 的結果,轉成 Enumerable
// index 是從0開始,流水號是從1開始,所以要加 1
var result = searchData
.AsEnumerable()
.Select((u, index) => new
{
UserId = u.UserId,
MinTime = u.MinTime,
MaxTime = u.MaxTime,
Num = u.Num,
Idx = index + 1
}).ToList();
//最後Bind到 GridView 上
gvMaster.DataSource = result;
gvMaster.DataBind();
}
參考資料
Hi,
亂馬客Blog已移到了 「亂馬客 : Re:從零開始的軟體開發生活」
請大家繼續支持 ^_^