2014-10-17 79 views
0

的名单我有包含像转换一个XML到匿名对象

<LanguageList> 
    <Language code = "EN-US" name = "English - United Sates"></Language> 
    <Language code = "EN-UK" name = "English - United Kingdom"></Language> 
    -- 
    -- 
</LanguageList> 

语言细节我想这个转换为匿名对象的列表,其中每个对象包含两个字段代码和名称的XML。

我试着用下面的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子句等方式..但没能得到它。任何人都可以帮助提前

谢谢..

回答

1

你需要得到每个节点的属性,以及创建匿名对象。事情是这样的:在你的代码

var listOfLanguages = xDoc.Descendants("LanguageList").Descendants() 
          .Select(l => new 
          { 
           Name = l.Attribute("name").Value, 
           Code = l.Attribute("code").Value 
          }); 
+0

谢谢大家乌尔快速帮助。你救了我一小时.. – satya 2014-10-17 21:55:11

0

而不是选择的 “U”,选择像 “新{代码= u.Attribute(” 代码 “)。值,名称= u.Attribute(” 名“).Value}”。

0

大厦:

var anonList = (from u in xDoc.Descendants("LanguageList") 
           .Elements("Language") 
       select new 
         { 
          Name = (string)u.Attribute("name"), 
          Code = (string)u.Attribute("code") 
         } 
       ).ToList(); 
  1. 使用Elements(),而不是DescendantNodes()得到子元素。 2.您可以将XAttribute直接投射到string