当XElements具有相同名称时,如何使用LINQ查询来获取XElement值

Joh*_*hnC 8 c# linq-to-xml

我有一个像下面这样的xml:

<Table>
  <Record>
    <Field>Value1_1</Field>
    <Field>Value1_2</Field>
  </Record>
  <Record>
    <Field>Value2_1</Field>
    <Field>Value2_2</Field>
  </Record>
</Table>
Run Code Online (Sandbox Code Playgroud)

我想要的是一个LINQ查询,它生成一个IEnumerable,我可以将其指定为DataGrid的数据源.我到目前为止的内容如下:

var temp = from record in table.Elements("Record")
            select record.Element("Field").Value
Run Code Online (Sandbox Code Playgroud)

我可以拥有多个场元素的事实是我的绊脚石.

在上面的例子中,我需要的是类似的东西IEnumerable<string,string>.datagrid看起来像这样:

Value1_1, Value1_2
Value2_1, Value2_2
Run Code Online (Sandbox Code Playgroud)

Ric*_*gan 10

这样的事情有帮助吗?

var a = from record in table.Elements("Record")
    select new
    {
        one = (string)record.Elements().ElementAt(0),
        two = (string)record.Elements().ElementAt(1)
    };
Run Code Online (Sandbox Code Playgroud)


Boj*_*nik 0

您可以将调用链接到Elements()

var temp = from field in table.Elements("Record").Elements("Field")
           select field.Value;
Run Code Online (Sandbox Code Playgroud)

您还可以使用Descendants()

 var temp = from field in table.Descendants("Field")
            select field.Value;
Run Code Online (Sandbox Code Playgroud)

但是,这将返回 <Table> 下的所有 <Field> 元素,即使它们不在 <Record> 元素内。