public DateTime PlanMinimumDate;
public DateTime PlanMaximumDate;
public DateTime ClaimMaximumDate;
public DateTime ClaimMinimumDate;
public BenefitPlan[] Plans;
public Data(DateTime min, DateTime max)
Plans = new BenefitPlan[]{new BenefitPlan()
{Name = "2015 Plan", PlanMinimumDate = new DateTime(2015, 1, 1), PlanMaximumDate = new DateTime(2015, 12, 31), }, new BenefitPlan()
{Name = "2016 Jan", PlanMinimumDate = new DateTime(2016, 1, 1), PlanMaximumDate = new DateTime(2016, 1, 31), }, new BenefitPlan()
{Name = "2016 Feb", PlanMinimumDate = new DateTime(2016, 2, 1), PlanMaximumDate = new DateTime(2016, 12, 31), }, new BenefitPlan()
{Name = "2017 Plan", PlanMinimumDate = new DateTime(2017, 1, 1), PlanMaximumDate = new DateTime(2017, 12, 31), }, new BenefitPlan()
{Name = "2018 Plan Jan", PlanMinimumDate = new DateTime(2018, 1, 1), PlanMaximumDate = new DateTime(2018, 1, 31), }, new BenefitPlan()
{Name = "2018 Plan Feb", PlanMinimumDate = new DateTime(2018, 2, 1), PlanMaximumDate = new DateTime(2018, 12, 31), }};
public static void Main()
var sampleClaimData = new Data(new DateTime(2017, 10, 1), new DateTime(2017, 11, 1));
var plans = sampleClaimData.Plans.Where(x => (x.PlanMinimumDate <= sampleClaimData.ClaimMinimumDate && x.PlanMaximumDate >= sampleClaimData.ClaimMinimumDate) || (x.PlanMinimumDate <= sampleClaimData.ClaimMaximumDate && x.PlanMaximumDate >= sampleClaimData.ClaimMaximumDate) || (sampleClaimData.ClaimMinimumDate <= x.PlanMinimumDate && sampleClaimData.ClaimMaximumDate >= x.PlanMaximumDate)).ToList();
plans.ForEach(x => Console.WriteLine(x.Name));
var plans2 = sampleClaimData.Plans.Where(x => x.PlanMinimumDate <= sampleClaimData.ClaimMaximumDate && x.PlanMaximumDate >= sampleClaimData.ClaimMinimumDate).ToList();
plans2.ForEach(x => Console.WriteLine(x.Name));