星期一, 4月 28, 2014

[LINQ] GroupBy

論壇討論 - DataTable 日期不重複篩選問題,看到有前輩用 Distinct 去解,就想到說用 GroupBy 應該也可以作到同樣的效果,拿來練習一下
// 引用 namespace
using System.Data;
using System.Data.SqlClient;

// 建立測試資料
DataTable dt = new DataTable();
dt.Columns.Add("Date",typeof(DateTime));
dt.Rows.Add(new DateTime(2014, 1, 1, 11, 10, 10));
dt.Rows.Add(new DateTime(2014, 1, 2, 12, 10, 10));
dt.Rows.Add(new DateTime(2014, 1, 2, 13, 10, 10));
dt.Rows.Add(new DateTime(2014, 1, 3, 14, 10, 10));
dt.Rows.Add(new DateTime(2014, 1, 4, 15, 10, 10));

// 方法一
var result = (from data in dt.AsEnumerable()
     select data.Field<DateTime>("Date").Day).Distinct();

// 方法二
var result = dt.AsEnumerable().Select(Data => Data.Field<DateTime>("Date").Day).Distinct();

// 方法三
var result = from data in dt.AsEnumerable()
    group data by data.Field<DateTime>("Date").Day into o
    select o.Key;

// 方法四
var result = dt.AsEnumerable().GroupBy(data => data.Field<DateTime>("Date").Day).Select(o => o.Key);
[LINQ] GroupBy

沒有留言:

張貼留言