我有一个包含事件日期的C#列表。我想知道如何使用lamdas来获取订购的最新活动。
这是我现有的事件类代码。
/// <summary>
/// Class that represents an Info Session.
/// </summary>
public class InfoSessions {
public String Place { get; set; }
public DateTime Date { get; set; }
public InfoSessions(String place, DateTime date)
{
Place = place;
Date = date;
}
}
这是我目前订购活动的目的。我不想看到过去的事件。
List<InfoSessions> sessions = new List<InfoSessions>();
sessions.Add(new InfoSessions("Melbourne", new DateTime(2015,03,24)));
sessions.Add(new InfoSessions("HongKong", new DateTime(2015, 02, 14)));
sessions.Add(new InfoSessions("Singapore", new DateTime(2015, 04, 14)));
sessions.Add(new InfoSessions("Sydney", new DateTime(2015, 05, 18)));
sessions.Add(new InfoSessions("Aukland", new DateTime(2015, 08, 18)));
List<InfoSessions> orderSessions = sessions.OrderByDescending(x => x.Date).ToList();
InfoSessionGrid.DataSource = orderSessions;
InfoSessionGrid.DataBind();
我喜欢按日期立即订购事件。
答案 0 :(得分:0)
即将结束,您只需添加Where()
谓词即可在指定日期之前消除任何内容。检查此示例:
class Program
{
static void Main(string[] args)
{
var sessions = new List<InfoSessions>();
sessions.Add(new InfoSessions("South Pole", new DateTime(2015, 01, 01)));
sessions.Add(new InfoSessions("Melbourne", new DateTime(2015, 03, 24)));
sessions.Add(new InfoSessions("HongKong", new DateTime(2015, 02, 14)));
sessions.Add(new InfoSessions("Singapore", new DateTime(2015, 04, 14)));
sessions.Add(new InfoSessions("Sydney", new DateTime(2015, 05, 18)));
sessions.Add(new InfoSessions("Auckland", new DateTime(2015, 08, 18)));
var orderSessions = sessions.Where(x => x.Date > DateTime.Now)
.OrderByDescending(x => x.Date)
.ToList();
orderSessions.ForEach(x=> Console.WriteLine("Location: {0}, Date: {1}", x.Place, x.Date));
Console.ReadKey();
}
}
public class InfoSessions
{
public String Place { get; set; }
public DateTime Date { get; set; }
public InfoSessions(String place, DateTime date)
{
Place = place;
Date = date;
}
}
我已经排除了之前发生的任何事情,因此南极会议没有被列入名单。
请注意,您拼错Auckland
错误(抱歉,这是我的家乡,所以我无法放手),您可能希望OrderBy
符合您立即订购的标准按日期发生。