0
我有以下的XML,我需要deserialise一個對象:如何優化這個LINQ查詢?
<animals>
<retrive>true</retrive>
<collection>
<cat>big</cat>
<dog>spot</dog>
<vetName>John Smith</vetName>
</collection>
</animals>
這是使用LINQ我嘗試:
private Animal GetAnimalFromXML(string xml)
{
var tempdata = (from c in data.Elements("collection")
select new
{
Cat = (string)c.Element("cat"),
Dog = (string)c.Element("dog"),
VetName = (string)c.Element("vetName"),
}).First();
return new Animal(){
Cat = tempdata.Cat,
Dog = tempdata.Dog,
VetName = tempdata.VetName
}
}
我不喜歡,我不得不使用一個臨時對象所以我想知道是否有可能解決這個問題,並減少這種方法只是一個單一的查詢?
謝謝, d。
這是不是當你想到只有一個_collection_元素使用第一種方法好主意。更好的方法是使用Single並處理其結果。 – 2012-01-13 11:23:34
@Petr - 你怎麼知道集合只有1個元素? Perheps的要求是「從集合中取出第一條記錄」。 – Jamiec 2012-01-13 13:27:14
@Jamiec我想,因爲第一個方法是在整個變換集合上調用而不是在原始_collection_元素上。如果需要從多個選項中選擇第一個_collection_,選擇第一個集合並在此之後進行轉換才更爲有效。 – 2012-01-13 13:57:27