如何优化这个LINQ查询?

时间:2012-01-13 10:31:59

标签: c# xml linq

我需要将以下xml反序列化为对象:

 <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。

1 个答案:

答案 0 :(得分:7)

无需使用临时数据

private Animal GetAnimalFromXML(string xml)
{
   return (from c in data.Elements("collection")
           select new Animal()
                      {
                             Cat = (string)c.Element("cat"),
                             Dog = (string)c.Element("dog"),
                             VetName = (string)c.Element("vetName"),
                       }).First();

}