请注意,每个<Field></Field>可具有不同的元件,如突出显示<I32>或<String>.我想在datagridview中显示元素名称,其中Type是元素的名称(I32或String或其他子元素<Field>): -

到目前为止,我已经尝试过此代码,但它返回了An unhandled exception of type 'System.NullReferenceException'.
XDocument doc = XDocument.Load("GetLotDetails.xml");
var data = doc.Descendants("Document").Where(x => (String)x.Attribute("name") == "DATA").SelectMany(x => x.Elements("Field"));
var query = from d in data
let str = d.Element("String").Name
let other = d.Element("I32").Name
select new
{
Name = d.Attribute("name").Value,
Type = str.Equals("String") ? "String" : (other.Equals("I32") ? "I32" : null),
Value = d.Value,
};
dataGridView1.DataSource = query.ToList();
Run Code Online (Sandbox Code Playgroud)
所以这个想法就是让匿名Type = *whatever element name under …