using System.Collections.Generic;
public static void Main()
List<SomeEventObject> EventList = new List<SomeEventObject>();
DateTime now = DateTime.Now;
SomeEventObject event1 = new SomeEventObject("1", new DateTime(now.Year, now.Month, now.Day, 10, 0, 0), new DateTime(now.Year, now.Month, now.Day, 10, 5, 0));
SomeEventObject event2 = new SomeEventObject("2", new DateTime(now.Year, now.Month, now.Day, 10, 5, 0), new DateTime(now.Year, now.Month, now.Day, 10, 10, 0));
List<SomeEventObject> overlappingEvents = EventList.Where (e =>
EventList.Any (ev => e.id != ev.id && ev.StartDate <= e.EndDate && ev.EndDate >= e.StartDate)).ToList();
foreach(SomeEventObject eventItem in overlappingEvents){
Console.WriteLine(eventItem.id);
public class SomeEventObject
public DateTime StartDate
public SomeEventObject(string id, DateTime startDate, DateTime endDate)
this.StartDate = startDate;