2011-11-03 63 views
0

之前,我有一個簡單的LINQ到我運行XML查詢和結果(通過collection)綁定到listbox。例如,我無法弄清楚如何在綁定它們之前更改結果。我有以下代碼:改變集合的結果綁定到一個列表框

XElement xmlEvents = XElement.Parse(e.Result); 
lstb.ItemsSource = from GetEvents in xmlEvents.Descendants("e2event") 
    select new GetEvents 
    { 
     eventid = GetEvents.Element("eventid").Value, 
     eventtime = GetEvents.Element("eventtime").Value 
    }; 

eventtime返回Linux的時間戳,我有這個轉換成日期時間戳一點方法。那麼我怎麼會在綁定到listbox之前轉換到這個?

回答

1

那麼最簡單的方法是改變你的投影:(凡ConvertTime是你的方法)

XElement xmlEvents = XElement.Parse(e.Result); 
lstb.ItemsSource = 
      from GetEvents in xmlEvents.Descendants("e2event") 
      select new GetEvents 
      { 
       eventid = GetEvents.Element("eventid").Value, 
       eventtime = ConvertTime(GetEvents.Element("eventtime").Value) 
      }; 

需要注意的是,如果這是一個整數值,你可以得到的LINQ to XML來爲您執行數字轉換:

XElement xmlEvents = XElement.Parse(e.Result); 
lstb.ItemsSource = 
      from GetEvents in xmlEvents.Descendants("e2event") 
      select new GetEvents 
      { 
       eventid = GetEvents.Element("eventid").Value, 
       eventtime = ConvertTime((long) GetEvents.Element("eventtime")) 
      }; 
+0

我的方法ConverTime想要一個雙,所以我沒有如上所述,但使用雙而不是長。我剛剛得到一個錯誤,說「無法將類型字符串轉換爲雙倍」我使用的一個示例; e2eventstart = ConvertFromUnixTimestamp((雙)GetEvents.Element(「e2eventstart」)值),感謝 – Nathan

+0

@Nathan:你沒有複製我的例子不夠緊密 - 注意,在第二個例子我使用顯式轉換爲'長'我*不*使用'價值'屬性。我正在轉換'XElement'本身。 –

+0

你100%正確的,我錯過了最後一位。真的很抱歉,並感謝您的幫助:) – Nathan