using System.Collections.Generic;
public static void Main()
var _startDate = new DateTime(2016, 7, 1);
var _endDate = new DateTime(2016, 7, 31);
var logicList = new List<MyObject>()
new MyObject() {Id = 1, Name = "1st Scenarios", StartDate = new DateTime(2016, 7, 1), EndDate = new DateTime(2016, 7, 31) },
new MyObject() {Id = 1, Name = "2nd Scenarios", StartDate = new DateTime(2016, 7, 17), EndDate = new DateTime(2016, 8, 10) },
new MyObject() {Id = 1, Name = "3rd Scenarios", StartDate = new DateTime(2016, 6, 28), EndDate = new DateTime(2016, 7, 04) },
new MyObject() {Id = 1, Name = "4th Scenarios", StartDate = new DateTime(2016, 7, 10), EndDate = new DateTime(2016, 7, 14) },
new MyObject() {Id = 1, Name = "5th Scenarios", StartDate = new DateTime(2016, 6, 18), EndDate = new DateTime(2016, 8, 07) }
var result = (from pps in logicList where _startDate <= pps.EndDate && _endDate >= pps.StartDate select pps).ToList();
Console.WriteLine("Results from 1st Logic");
foreach (var item in result)
Console.WriteLine(item.Name);
var result2 = (from pps in logicList where ((pps.StartDate <= _startDate && pps.EndDate >= _startDate)
|| (pps.StartDate <= _endDate && pps.EndDate >= _endDate)) select pps).ToList();
Console.WriteLine("Results from 2nd Logic");
foreach (var item in result2)
Console.WriteLine(item.Name);
Console.WriteLine("2nd Logic is " + result2.Count + " out of " + logicList.Count);
public int Id { get; set; }
public string Name { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }