我有一个xml,其中包含语言详细信息,如
<LanguageList>
<Language code = "EN-US" name = "English - United Sates"></Language>
<Language code = "EN-UK" name = "English - United Kingdom"></Language>
--
--
</LanguageList>
我想将其转换为匿名对象列表,其中每个对象包含两个字段代码和名称。
我尝试了以下linq表达式
var anonList = (from u in xDoc.Descendants("LanguageList").DescendantNodes()
select u).ToList();
这给了LanguageList下的所有节点,如
<Language code = "EN-US" name = "English - United Sates"></Language>
<Language code = "EN-UK" name = "English - United Kingdom"></Language>
我尝试添加一些where子句和其他方式..但无法得到它。任何人都可以帮忙
提前致谢..
答案 0 :(得分:1)
您需要获取每个节点的属性并创建匿名对象。像这样:
var listOfLanguages = xDoc.Descendants("LanguageList").Descendants()
.Select(l => new
{
Name = l.Attribute("name").Value,
Code = l.Attribute("code").Value
});
答案 1 :(得分:0)
选择&#34; u&#34;,而不是选择&#34; new {Code = u.Attribute(&#34; code&#34;)。值,Name = u.Attribute(&# 34;姓名&#34;)。价值}&#34;。
答案 2 :(得分:0)
以你拥有的代码为基础:
var anonList = (from u in xDoc.Descendants("LanguageList")
.Elements("Language")
select new
{
Name = (string)u.Attribute("name"),
Code = (string)u.Attribute("code")
}
).ToList();
Elements()
代替DescendantNodes()
来获取子元素。 2.您可以将XAttribute
直接投射到string
。