我在winform下做,发现.断点调试后看,Linq查询后persons也正常有值了,但是就是无法显示,还是就是XML文件里面,元素名只能用英文啊,中文就无法取得值了,比如 ("person")如果换成 个人 就没有值了....... 
private void li() 

string bb = @"Sample.xml"; 
XDocument xd = XDocument.Load(bb); 
var persons = from p in xd.Root.Elements("person") 
select new 

name = p.Attribute("name").Value, 
age = p.Attribute("age").Value, 
salary = p.Attribute("salary").Value 
}; 
//用英文元素名,可以得到行但是还是不能绑定 
dataGridView1.DataSource = persons; 
}
就是这个,linq查询后persons有内容了,但是dataGridView1里面是空的,无法显示,winform下不能用...........
在ASPX下可以正常显示
        dataGridView1.DataSource = persons;
        dataGridView1.DataBind();
XML文件如下
  <?xml version="1.0" encoding="utf-8" ?> 
- <root>
  <person name="webabcd" age="27" salary="33" /> 
  <person name="aaa" age="22" salary="555" /> 
  </root>