如何通过LINQ to XML创建Dictionary ?

我有以下XML:

       

我有以下代码,我将得到一个Dictionary()对象

 myObject.FootNotes 

这样每条线都是一个键/值对

 var doc = XElement.Parse(xmlString); var myObject = new { FootNotes = (from fn in doc .Elements("FootNotes") .Elements("Line") .ToDictionary ( column => (int) column.Attribute("id"), column => (string) column.Attribute("reference") ) ) }; 

我不确定如何将XML从XML转换为对象。 有谁能提出解决方案?

你的代码几乎是正确的。 请尝试这种轻微变化:

 FootNotes = (from fn in doc.Elements("FootNotes") .Elements("Line") select fn).ToDictionary( column => (int)column.Attribute("id"), column => (string)column.Attribute("reference") ) 

我不认为from ... select语法的长期在这里真的很有帮助。 我会使用这个稍微简单的代码:

 Footnotes = doc.Descendants("Line").ToDictionary( e => (int)e.Attribute("id"), e => (string)e.Attribute("reference") ) 

但是,您在示例代码中使用匿名类型。 如果计划将此对象返回给调用者,则需要使用具体类型。

 var myObject = new SomeConcreteType { Footnotes = .... };