2011-12-01 70 views
4

我希望有人能告訴我哪個是更有效和/或正確的方式來檢索一些數據。檢索數據LINQ與反射

我有一些XML文件來自第三方及其附加的DTD。所以我將DTD轉換爲C#類,以便將XML反序列化到類中。我現在需要映射這些數據以匹配數據結構的設置方式。

最終的問題是;我應該使用反射或LINQ。 XML的格式在設計上有點通用,其中東西保存在Items [Array]或Item [Object]中。

我已經做了以下內容:

TheirClass class = theirMessage.Items.Where(n=> n.GetType() == typeof(TheirClass)).First() as TheirClass; 

MyObject.Param1 = ConversionHelperClass.Convert(class.Obj1); 
MyObject.Param2 = ConversionHelperClass.Convert(class.Obj2); 

我還可以做一些東西與思考,我通過在類的名稱和屬性我試圖阻攔。

試圖在這裏做正確的事情。

+0

Linq查詢是否有效寫入可以像反射一樣快。我發現這篇文章給出了很好的信息。http://stefan.rusek.org/Posts/LINQ-Expressions-as-Fast-Reflection-Invoke/3/ –

回答

5

作爲一般規則,我建議避免反射,除非它是絕對必要的!它引入了一個性能開銷並意味着你錯過了編譯器團隊努力給予我們的所有可愛的編譯時檢查。

Linq到實體本質上是查詢內存數據集,所以它可以非常快。

如果您的最終目標是解析來自xml文檔的信息,我建議您查看XDocument class。它爲查詢xml文檔提供了一個非常好的抽象。

+0

反射比較貴嗎?這只是一個普遍的經驗法則嗎? –

+2

反射非常昂貴。如果可以的話,避免它。 –

+0

謝謝。我記得多年前有人告訴我要避免像瘟疫一樣,但我不知道爲什麼。 –