2013-03-28 84 views
-2

我有事件在C#的網頁的列表,其中包括屬性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(); 
+0

嘿,幫個忙,寫下5個隨機日期,然後寫下你想要的順序。在你的問題中做。插圖比混淆詞更具吸引力 –

+1

另外,假設你現在的日期是6月16日。現在你想讓6月17日在6月15日之前或之後出現嗎? – dotNET

+0

你的問題在這裏非常模糊,只是一個文本牆,其中一個例子解釋了你的問題的一面。請使用更多示例改進它,並告訴我們您嘗試過的內容。 – Cheesebaron

回答

0

試試這個:

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

此解決方案假定您希望通過從當前系統日期的線性絕對距離排序的日期列表。

+0

謝謝 - 我不認爲這是我所要求的,但這是我的錯,因爲不夠清楚。 –

0

沒有描述過去日期(在「相對」日期之前)如何唯一地處理日期的情況,這聽起來像你只需要按日期排序。我認爲你對自己做得太難了。