请教高手关于LINQ用法  以下方法GetData()应该返回什么类才正确 〈books> 
  <book> 
    <id>0 </id> 
    <name>ASP.NET AJAX </name> 
  </book> 
  .... 
</books> protected void Page_Load(object sender, EventArgs e) 

  this.GridView1.DataSource=GetData(); 
} private ******* GetData() 

  XElement xEle=XElement.Load("..."); 
  var books=from x in xEle.Element("books").Elements("book") 
            select new 
            { 
                id=x.Element("id").value, 
                name=x.Element("name").value, 
            };   return books; 
}  

解决方案 »

  1.   

    不行,因为是以匿名定义 
    var books=from x in xEle.Element("books").Elements("book") 
                select new 
                { 
                    id=x.Element("id").value, 
                    name=x.Element("name").value, 
                }; 所以不能以IEnumerable<XElement>返回若以IEnumerable<XElement>定义,则不能先输入数组的值
    IEnumerable<XElemnet> books=from x in xEle.Element("books").Elements("book") 
                                select x; 
    问题是在于需要有一个返回值可以成为GridView.DataSource的对象
      

  2.   

    现在才想出一个最笨的解决方式,以List<Class>方式来解决,但好像太麻烦
    不能真正显示出LINQ的优点。而且令网络开销太大,严重影响速度。请问各位高手,哪一位有更加好的招数,请指教。class Book
    {
       private string id1;
       private string name1;   public string id
       {
        get{return id1;}
        set{id1=value;}
       }
       ...
    }protected void Page_Load(object sender, EventArgs e) 

      this.GridView1.DataSource=GetData(); 
    } private List<Book> GetData() 

      XElement xEle=XElement.Load("..."); 
      IEnumerable<Element> books=from x in xEle.Element("books").Elements("book") 
                                 select x; 
                
      List<Book> thebooks=new List<Book>();
     
      foreach(var book in books)
      { 
           Book theBook=new Book();
           theBook.id=x.Element("id").value;
           theBook.name=x.Element("name").value; 
           thebooks.Add(theBook);          
      }  return thebooks; 
    }  
      

  3.   

    可以使用 
          IQueryable<T>