まあ、それはあなたが探しているデータに依存します。実際の Date 値を気にしない場合は、整数がそれらによってグループ化されている (そして、それらによってソートされていると思われる) だけで、Event クラスへの参照から次のようになります。
List<List<int>> byDate = evt.eventData
.GroupBy(d => d.date)
.OrderBy(g=>g.Key)
.Select(g => g.Select(v => v.someData)
.ToList())
.ToList();
ただし、日付が気になる場合は、2 つの方法があります。Data クラスへの参照を破棄してしまう可能性があります。
Dictionary<DateTime, List<int>> byDate2 = evt.eventData
.GroupBy(d => d.date)
.OrderBy(g=>g.Key)
.ToDictionary(
g=>g.Key,
g => g.Select(v => v.someData)
.ToList());
または、Data オブジェクトを保持することもできます。
List<List<Data>> byDate = evt.eventData
.GroupBy(d => d.date)
.OrderBy(g => g.Key)
.Select(g => g.ToList())
.ToList();
しかし、TransferObject クラスへの参照からこれを実行したいとします。次に、ほとんど同じことを行いますが、SelectMany 関数を使用する必要があります。
TransferObject txobj = new TransferObject(); // however this happens
List<List<int>> byDate = txobj.events
.SelectMany(evt=>evt.eventData
.GroupBy(d => d.date)
.OrderBy(g => g.Key)
.Select(g => g.Select(v => v.someData)
.ToList()))
.ToList();
Dictionary<DateTime, List<int>> byDate2 = txobj.events
.SelectMany(e=>e.eventData)
.GroupBy(d => d.date)
.OrderBy(g=>g.Key)
.ToDictionary(
g=>g.Key,
g => g.Select(v => v.someData)
.ToList());
List<List<Data>> byDate3 = txobj.events
.SelectMany(evt=>evt.eventData
.GroupBy(d => d.date)
.OrderBy(g => g.Key)
.Select(g => g.ToList()))
.ToList();
ここで重要なのは、SelectMany 関数は基本的に、通常の Select が返す 1 つのレベルのコレクションを連結するということです。
any IEnumerable<IEnumerable<T>> becomes an IEnumerable<T>.