public void TestTriggerAdvanced() { // rows var schedule = new[] { new Schedule { StartDate = DateTime.Parse("6/1/2014"), Name = "Item 1", Triggers = TriggerCollectionEx.Parse("Monthly"), Span = NumberSpan.Parse("0 of 12") }, new Schedule { StartDate = DateTime.Parse("6/1/2014"), Name = "Item 2", Triggers = TriggerCollectionEx.Parse("Monthly"), Span = NumberSpan.Parse("0 of 6") } , new Schedule { StartDate = DateTime.Parse("6/1/2014"), Name = "Item 3", Triggers = TriggerCollectionEx.Parse("Daily"), Span = NumberSpan.Parse("0 of 6") } }; // expand var r = schedule.SelectMany(x => x.Triggers.SelectDates(y => new { StartDate = x.StartDate.ToShortDateString(), Date = y.ToShortDateString(), Span = ++x.Span }).Take(20), (a, b) => new { a.StartDate, a.Name, b.Date, b.Span, }).ToList(); // results var c = r.Count; }