0

私はまだLinqToXmlを使っていないので、助けを求めたいと思います

ソースXML:

<Projects xmlns="">
   <Project id="12345">
     <Name>AName</Name>
   </Project>
   <Project id="23456">
     <Name>BName</Name>
   </Project>
</Projects>

Linqクエリ:

var q = (from xe in datasource.Descendants()
                 select new Data{ 
                                  ID = xe.Name.ToString(), 
                                  Name = xe.Value.ToString() 
                                }).ToList();

出力:

Project AName 
Name AName 
Project BName 
Name BName 

必要な出力:

12345 AName
23456 BName

したがって、クエリはすべての子孫を反復処理しておりName、ノード名およびValueノー​​ド値として使用されているようです。目的の出力を取得するには、どのように変更する必要がありますか?このようなものはどうですか:

  • 反復のためにすべての<Name>ノードを取得する

  • Valueそのノードとid祖先の属性を選択します

PS LinqToXmlの特定のチュートリアルをお勧めしますか?

4

1 に答える 1

1
var q = (from p in datasource.Descendants("Project")
         select new Data { 
               ID = (string)p.Attribute("id"), 
               Name = (string)p.Element("Name") 
         }).ToList();

整数型のプロパティも検討してください。そうすれIDば、次のように解析できます。

ID = (int)p.Attribute("id")

また、メソッド(流暢な)構文を使用できます。

var q = datasource
          .Descendants("Project")
          .Select(p => new Data { 
               ID = (string)p.Attribute("id"), 
               Name = (string)p.Element("Name") })
          .ToList();
于 2013-03-26T12:09:38.803 に答える