LINQ学習ノート(05)
Group and Project.
class CalendarEvent
{
public string Title { get; set; }
public DateTimeOffset StartTime { get; set; }
public TimeSpan Duration { get; set; }
}
class Program
{
static void Main(string[] args)
{
List<CalendarEvent> events = new List<CalendarEvent>
{
new CalendarEvent
{
Title = "Swing Dancing at the South Bank",
StartTime = new DateTimeOffset(2009,7,11,15,0,0, TimeSpan.Zero),
Duration = TimeSpan.FromHours(4)
},
new CalendarEvent
{
Title = "Saturday Night Swing",
StartTime = new DateTimeOffset(2009, 7, 11, 19, 30, 0, TimeSpan.Zero),
Duration = TimeSpan.FromHours(6.5),
},
new CalendarEvent
{
Title = "Formula 1 German Grand Prix",
StartTime = new DateTimeOffset(2009,7,12,12,19,0, TimeSpan.Zero),
Duration = TimeSpan.FromHours(3)
},
new CalendarEvent
{
Title = "Swing Dance Picnic",
StartTime = new DateTimeOffset(2009,7,12,15,0,0,TimeSpan.Zero),
Duration = TimeSpan.FromHours(4)
},
new CalendarEvent
{
Title = "Stompin' at the 100 Club",
StartTime = new DateTimeOffset(2009,7,13,19,45,0,TimeSpan.Zero),
Duration = TimeSpan.FromHours(5)
}
};
var eventsByDay = from ev in events
group ev by ev.StartTime.Date;
foreach (var day in eventsByDay)
{
Console.WriteLine("Events for " + day.Key);
foreach (var item in day)
{
Console.WriteLine(item.Title);
}
}
Console.WriteLine("-----------Projected--------------------------");
var projected = from ev in events
select ev.StartTime + ev.Duration;
foreach (var item in projected)
{
Console.WriteLine(item);
}
Console.WriteLine("----------Projected with anonymous type---------");
var projectedAnonymous = from ev in events
select new
{
Title = ev.Title,
StartTime = ev.StartTime,
EndTime = ev.StartTime + ev.Duration
};
foreach (var item in projectedAnonymous)
{
Console.WriteLine("Event {0} strats at {1} and ends at {2}", item.Title, item.StartTime, item.EndTime);
}
}
}