如何优化此LINQ查询

本文关键字:LINQ 查询 优化 何优化 | 更新日期: 2023-09-27 18:20:23

我有以下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.

如何优化此LINQ查询

无需使用临时数据

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();
}