2012-05-07 28 views
0

我想阅读下面的XML并按以下顺序打印输出。你可以帮助查询?使用嵌套循环的Linq XML查询

enter image description here

10 Subject1 A1 10 Subject2 B1 10 Subject3 C1 20 Subject1 B2 20 Subject2 A1 20 Subject3 C2

预先感谢

+0

我不明白你怎么指望'Subject1 C1'出来的是XML的? –

+0

对不起,主题3有拼写错误。我已经能够加载Xdocument并用XElement ID声明var,但从未使用过Linq。我可以在SQL服务器上做到这一点,但问题是我失去了很多的格式,因此试图使用C# – user219628

回答

0

这里的示例如何可以查询以你想要的形式:

XDocument doc = XDocument.Load("test.xml"); 
var query = from l in doc.Descendants("L1") 
      let id = l.Attribute("id").Value 
      from subject in l.Descendants("Subject") 
      select new 
      { 
       Id = id, 
       SubjectName = (string)subject.Attribute("SubjectName"), 
       Score = (string)subject.Attribute("Score") 
      }; 

foreach (var result in query) 
{ 
    Console.WriteLine(result); 
} 

输出:

{ Id = 10, SubjectName = Subject1, Score = A1 } 
{ Id = 10, SubjectName = Subject2, Score = B1 } 
{ Id = 10, SubjectName = Subject3, Score = C1 } 
{ Id = 20, SubjectName = Subject1, Score = B2 } 
{ Id = 20, SubjectName = Subject2, Score = A1 } 
{ Id = 20, SubjectName = Subject3, Score = C2 } 
+0

对于更多_inline madness_可以使用'(query).ToList()。ForEach(item => Console.WriteLine item))',用你建议的linq查询替换'query'。 ;) –

+0

谢谢先生!非常感谢 – user219628

+0

你好,请建议应该做些什么改变才能在输出中显示日期。谢谢 – user219628