2012-04-17 34 views
0

嗨我有一個休息服務,其中有一個學生列表,每個學生都有一個日期時間附加到創建。orderby在foreach循環中的日期時間查詢

在我的客戶端我想從最新的這個日期先訂購,在我的客戶端的代碼如下所示:

public FindStudent() 
    { 
     InitializeComponent(); 
     string uriGroups = "http://localhost:8000/Service/Student"; 
     XDocument xDoc = XDocument.Load(uriGroups); 

並列出學生首先創造,我想了一下我可以通過查詢添加到foreach var節點,但我不認爲這會工作,有無論如何,我可以做到這一點?

+0

是什麼得到了與WCF,XAML,REST或WPF呢? – 2012-04-17 02:53:34

回答

0

您可以使用LINQ到XML如下

var temp = from feed in xDoc.Descendants("Students") 
orderby Convert.ToDateTime(feed.Element("CreatDate").Value) descending 
select new Student 
{ 
    ID = Convert.ToInt32(feed.Element("ID").Value), 
    //rest of the properties 
}; 
+0

我不能在foreach循環中使用select語句。 – 2012-04-17 05:14:14

+0

獲得中間數據結構中的學生集合(在你的foreach循環之前),對它進行排序,然後你可以在你的foreach循環中使用它。 – 2012-04-17 05:43:11

+0

XElement可以轉換爲DateTime:'(DateTime)feed.Element(「CreatDate」)' – MarcinJuraszek 2012-04-29 11:14:19

0

爲了達成些什麼基礎上的日期和時間,你需要通過從XML文檔它不會採取純文本將其轉換爲日期和時間在你for-each循環,你只是循環得到有序的,因爲它文字的但你可以創建一個學生類與變量Studentid, FirstName LastName" TimeAdded TimeAdded循環通過文件再次寫入每個信息的對象學生添加每個對象到列表排序列表你想要的方式,然後我認爲它應該顯示爲了你想要的。

0
XDocument xDoc = XDocument.Load(uriGroups); 
var sortedXdoc = xDoc.Descendants("Student") 
       .OrderByDescending(x => Convert.ToDateTime(x.Element("TimeAdded").Value)); 
+0

仍然是相同的輸出? – 2012-04-17 10:10:09