similar code in several methods I have method which checks period and return schedules:

public IEnumerable&lt;EventSchedule&gt; GetSchedulesForPeriod(PeriodEvent period, string tab = "")
        {
            switch (period)
            {
                case PeriodEvent.Today:
                    return GetTodaySchedules(tab);

                case PeriodEvent.Tomorrow:
                    return GetTomorrowSchedules(tab);

                case PeriodEvent.Week:
                    return GetWeekSchedules(tab);

                case PeriodEvent.FewWeek:
                    return GetFewWeekSchedules(tab);

                case PeriodEvent.Month:
                    return GetMonthSchedules(tab);
                case PeriodEvent.All:
                    return GetAllFromTodaySchedules(tab);

                default:
                    return GetTodaySchedules(tab);
            }
        }


Consider the GetTodaySchedules and GetTomorrowSchedules:

    private IEnumerable&lt;EventSchedule&gt; GetTodaySchedules(string tab)
{
    var today = DateTime.Now.Date;

    var result = Database.EventSchedules.Where(s =&gt; s.RecurrenceStart.Value.Date &lt;= today &amp;&amp;
         s.RecurrenceEnd.Value.Date &gt;= today &amp;&amp;
         s.BaseEvent.IsApproved.Value &amp;&amp; !s.IsRemoved.Value &amp;&amp;
         s.BaseEvent.EventsCategories.Any(
         c =&gt; c.EventCategory.Name == tab)).ToList();

    return result.Where(s =&gt; Evaluator.CheckDate(s, today)).ToList();
} 
private IEnumerable&lt;EventSchedule&gt; GetTomorrowSchedules(string tab)
{
    var today = DateTime.Now.AddDays(1).Date;
    var result = Database.EventSchedules.Where(s =&gt; s.RecurrenceStart.Value.Date &lt;= today &amp;&amp;
         s.RecurrenceEnd.Value.Date &gt;= today &amp;&amp;
         s.BaseEvent.IsApproved.Value &amp;&amp; !s.IsRemoved.Value &amp;&amp;
         s.BaseEvent.EventsCategories.Any(
         c =&gt; c.EventCategory.Name == tab)).ToList();

    return result.Where(s =&gt; Evaluator.CheckDate(s, today)).ToList();
}


The similar code have all methods above. How to rewrite it? May be, there is  some pattern for this?
And, the second, now I want that tab checks only if it filled and introduce new var called placeName (also check if filled):

private IEnumerable&lt;EventSchedule&gt; GetTodaySchedules(string tab, string placeName)
    {
        var today = DateTime.Now.Date;

        var result = Database.EventSchedules.Where(s =&gt; s.RecurrenceStart.Value.Date &lt;= today &amp;&amp;
             s.RecurrenceEnd.Value.Date &gt;= today &amp;&amp;
             s.BaseEvent.IsApproved.Value &amp;&amp; !s.IsRemoved.Value &amp;&amp;
             s.BaseEvent.EventsCategories.Any(
             c =&gt; c.EventCategory.Name == tab) &amp;&amp; s.BasePlace.Name).ToList();

        return result.Where(s =&gt; Evaluator.CheckDate(s, today)).ToList();
    } 


I don't want to create separate methods for this. What is best way to do this?  

Thanks.
You can compose query predicates by applying several where clauses in a row.
The predicates must be passed as Expression&lt;Func&lt;T, bool&gt;&gt; for composition.
See LINQ to Entities: Combining Predicates on Microsoft Docs.
Create a general schedules query like this
private IEnumerable&lt;EventSchedule&gt; GetSchedules(
    string tab,
    Expression&lt;Func&lt;EventSchedule, bool&gt;&gt; dateCondition)
{ 
    var result = Database.EventSchedules
        .Where(s =&gt; s.BaseEvent.IsApproved.Value &amp;&amp;
            !s.IsRemoved.Value &amp;&amp;
            s.BaseEvent.EventsCategories.Any(c =&gt; c.EventCategory.Name == tab))
        .Where(dateCondition)
        .ToList();
    return result.Where(s =&gt; Evaluator.CheckDate(s, today)).ToList();
}

And then pass it the appropriate individual date predicate like this
private IEnumerable&lt;EventSchedule&gt; GetTodaySchedules(string tab) {
    var today = DateTime.Now.Date;
    return GetSchedules(
        tab,
        s =&gt; s.RecurrenceStart.Value.Date &lt;= today &amp;&amp;
             s.RecurrenceEnd.Value.Date &gt;= today);
}

private IEnumerable&lt;EventSchedule&gt; GetTomorrowSchedules(string tab) {
    var tomorrow = DateTime.Now.AddDays(1).Date;
    return GetSchedules(
        tab,
        s =&gt; s.RecurrenceStart.Value.Date &lt;= tomorrow &amp;&amp;
             s.RecurrenceEnd.Value.Date &gt;= tomorrow);
}