Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I have a function that returns me only the fridays from a range of dates

public static List<DateTime> GetDates(DateTime startDate, int weeks)
{
    int days = weeks * 7;

    //Get the whole date range 
    List<DateTime> dtFulldateRange = Enumerable.Range(-days, days).Select(i => startDate.AddDays(i)).ToList();

    //Get only the fridays from the date range
    List<DateTime> dtOnlyFridays = (from dtFridays in dtFulldateRange
                                    where dtFridays.DayOfWeek == DayOfWeek.Friday
                                    select dtFridays).ToList();
    return dtOnlyFridays;
}

Purpose of the function: "List of dates from the Week number specified till the StartDate i.e. If startdate is 23rd April, 2010 and the week number is 1,then the program should return the dates from 16th April, 2010 till the startddate".

I am calling the function as:

DateTime StartDate1 = DateTime.ParseExact("20100430", "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture);
List<DateTime> dtList = Utility.GetDates(StartDate1, 4).ToList();

Now the requirement has changed a bit. I need to find out only the last Fridays of every month. The input to the function will remain same.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
216 views
Welcome To Ask or Share your Answers For Others

1 Answer

You already have the list of Fridays in the given range. Now just query this again like this:

List<DateTime> lastFridays = (from day in fridays
                              where day.AddDays(7).Month != day.Month
                              select day).ToList<DateTime>();

Hope this helps.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...