Reputation: 5670
I have a model object called EventListingResponse
like this
public class EventListingResponse
{
public List<events> result { get; set; }
public int totalResults { get; set; }
}
public class events
{
public string id { get; set; }
public string name { get; set; }
public string startDate { get; set; } //smaple date 2014-03-31T12:30:03
}
And I am storing data in this object like this
EventListingResponse eventListResponse = rGetAllEventList();//data from another function.
Now I want to filter this list so that I can get a list of events
like ,
-->events from January
-->Events from February etc.
Can any one point out a good method to accomplish this?
Upvotes: 0
Views: 171
Reputation: 166
define string array of months u wanted to be filtered with
string[] monthresult = { "January", "March" };
using Linq
var filteredresults = eventListResponse.result.Where(o => monthresult.Contains(Convert.ToDateTime(o.startDate).ToString("MMMM")));
filteredresults will content list of events with month January and March
Upvotes: 1
Reputation: 1641
You can use a LINQ query to filter your list:
var filtered = from item in eventListResponse.result
where DateTime.Parse(item.startDate) >= DateTime.Parse("your starting date")
and DateTime.Parse(item.startDate) <= DateTime.Parse("your ending date")
select item;
You also need to change your assignment of the data from rGetAllEventList()
to go into eventListResponse.result
.
Upvotes: 1
Reputation: 102
You could try this:
EventListingResponse evl = new EventListingResponse();
evl.result = new List<events>();
evl.result.Add(new events() { id = "1", name = "test1", startDate = "2014-03-31T12:30:03" });
evl.result.Add(new events() { id = "2", name = "test2", startDate = "2014-03-31T14:30:03" });
evl.result.Add(new events() { id = "3", name = "test3", startDate = "2014-05-31T16:30:03" });
evl.result.Add(new events() { id = "4", name = "test4", startDate = "2014-05-31T12:30:03" });
var dated_EventListResponse = evl.result.Select(t => new { date = DateTime.Parse(t.startDate), MyEvent = t });
var grouped_EventListResponse = dated_EventListResponse.GroupBy(g => g.date.Month);
foreach (var group in grouped_EventListResponse)
{
Console.WriteLine("Filter: " + group.Key);
foreach (var grouped_event in group)
{
Console.WriteLine("\t" + grouped_event.MyEvent.name);
}
}
Upvotes: -1