Предположим, у вас есть класс со свойствами DateTime и Decimal ...
public class SomeThingWithDateAndDecimal
{
public DateTime SomeDate { get; set; }
public decimal SomeDecimal { get;set; }
}
На вашем месте я бы создал класс для вашего ключа вот так ...
public class IndexKey
{
public int Year { get; set; }
public int Month { get; set; }
public DayOfWeek DayOfWeek { get; set; }
public int Hour { get; set; }
public IndexKey(DateTime dt)
{
Year = dt.Year;
Month = dt.Month;
DayOfWeek = dt.DayOfWeek;
Hour = dt.Hour;
}
Тогда из вашего списка сделайте что-то вроде этого ...
public static void Main()
{
var l = new List<SomeThingWithDate>();
//Fill the list with stuff...
var indexed = l.ToLookup(o => new IndexKey(o.SomeDate));
}
Это не вложенный, но все, что вы можете сделать с вложенными словарями, вы можете сделать с этой структурой. Некоторые вещи, которые вам трудно сделать с помощью вложенных словарей, упрощаются, например, поиск по частичному ключу, т.е. «Получить все значения с помощью Hour == 2».