|  | ■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();
 |