使用LINQ从节点中提取列表

时间:2014-08-20 16:05:29

标签: c# linq

我有以下xml片段,我希望能够提取名为elements“V”attribute ==“gender”的“Field”元素。然后我想返回“list_value”元素,以便我可以迭代它们并将它们添加到observableCollection以便在下拉列表中显示...我还没有能够只检索这个条件...任何想法?

<Field order="8">
            <name V="gender"/>
            <data_type V="list"/>
            <req_or_optional V=""/>
            <list_value>
                <item0 V="F"/>
                <item1 V="M"/>
                <item1 V="U"/>
            </list_value>
        </Field>
<Field order="9">
        <name V="date_of_birth"/>
        <data_type V="string"/>
        <req_or_optional V=""/>
</Field>

我开始使用此查询:

XElement gender  = justFields.Elements("name").Where(x => (string)x.Attribute("V") == "gender").SingleOrDefault();

这只返回“name”元素......

非常感谢! 哈罗德

1 个答案:

答案 0 :(得分:1)

var collection = xDoc.Descendants("Field").Single(elt => elt.Element("name").Attribute("V").Value == "gender").Element("list_value").Elements();

然后,如果你只想获得“M”,“F”和“U”,只需添加

.Select(elt => elt.Attribute("V").Value);