|
■No75658 (魔界の仮面弁士) に追記
> とりあえず設問通りに解釈すると、各パイプラインは次の流れになりそうですが:
上記をクエリ構文で書いてみました。
var q = from r in CreateSampleData()
/* ↓ (1) IPアドレス、イベントIDごとに集計する ↓ */
group new { r.IventTime, r.Flg } by new { r.IPAddress, r.IventID } into g
/* ↑ (1) IPアドレス、イベントIDごとに集計する ↑ */
/* ↓ (2) 各グループの最新日時を抽出 ↓ */
let Value = (from p in g
orderby p.IventTime descending
select new { p.IventTime, p.Flg }).FirstOrDefault()
/* ↑(2) 各グループの最新日時を抽出↑ */
let record = new
{
g.Key.IPAddress,
g.Key.IventID,
Value.IventTime,
Value.Flg
}
/* ↓ (3) 最新日時、IP、ID 順に並び替え↓ */
orderby record.IventTime, record.IPAddress, record.IventID
select record;
/* ↑(3) 最新日時、IP、ID 順に並び替え↑ */
// 内容確認
dataGridView1.DataSource = q.ToArray();
|