-2

我有一个 C# 网页中的事件列表,其中包括属性

  1. 日期 ( DateTime)
  2. 和说明 ( string)。

我想使用 LINQ 按日期对这个列表进行排序,但是我想在列表中首先使用下一个最接近的日期(到当前日期),最后一个最远的日期来执行此操作。

例如,如果日期是 1 月 1 日,则列表中的第一个是 1 月 1 日,列表中的最后一个是 12 月 31 日。
日期和月份是相关的,但年份不相关。

我对此进行了研究,但我不确定从哪里开始。
任何帮助将非常感激。

感谢所有的答案,抱歉我的问题含糊不清。我试图生成一个日期事件列表,最近的日期在列表顶部 - 例如生日列表 - 下一个即将到来的生日在顶部,最后一个即将到来的生日在最后。我确信我的代码可以拆开,因为我绝不是专业人士 - 但这可以满足我的需要。

我最后是这样回答的:

我为事件创建了一个类:

  public class Events
{
public int ContactId { get; set; }
public string Lastname { get; set; }
public string Firstname { get; set; }
public DateTime EventDate { get; set; }
public string Description { get; set; }
public DateTime Now { get; set; }
public bool Reminder { get; set; }
public TimeSpan Difference { get; set; }
public int SortValue { get; set; }


public Events(int contactId, DateTime date, string lastname, string firstname, string description, bool reminder)
{

    ContactId = contactId;
    EventDate = date;
    Description = description;
    Reminder = reminder;
    Now = DateTime.Now;
    Lastname = lastname;
    Firstname = firstname;

    Difference = EventDate - Now;
    SortValue = Convert.ToInt32(Difference.Days % 365);
    if (SortValue < 0) { SortValue += 365; }


}

}

然后我在我的代码中使用了以下内容:

   var upcomingEvents = new List<Events>();

foreach (var eventt in db.Query("SELECT CONTACT_ID, LASTNAME, FIRSTNAME, DATE, DESCRIPTION, REMINDER  FROM CONTACTS INNER JOIN EVENTS ON CONTACTS.ID = EVENTS.CONTACT_ID WHERE CONTACTS.CUSTOMER_ID = @0", WebSecurity.CurrentUserId)){
    var newEvent = new Events(eventt.CONTACT_ID, eventt.DATE, eventt.LASTNAME, eventt.FIRSTNAME, eventt.DESCRIPTION, eventt.REMINDER);
    upcomingEvents.Add(newEvent);   
}
upcomingEvents = upcomingEvents.OrderBy(x => x.SortValue).ThenBy(x=>x.Lastname).ToList();
4

2 回答 2

0

在不描述如何唯一地处理过去日期(在“相对”日期之前)的情况下,听起来您只需要按日期排序。我认为你对自己太难了。

于 2013-03-28T11:49:05.080 回答
0

Try this:

YourOrderedList = YourList.OrderBy(x => DateTime.Now.Subtract(new DateTime(DateTime.Now.Year, x.Month , x.Day)).TotalSeconds);

This solution assumes that you want to sort the list of dates by their linear absolute distance from the current system date.

于 2013-03-28T11:40:44.003 回答