XElementオブジェクトとList
-
13-09-2019 - |
質問
私は、次のプロパティを持つクラスを持っています:
public class Author {
public string FirstName { get; set; }
public string LastName { get; set; }
}
次に、私はそうのような著者のリストを持っています:
List<Author> authors = new List<Author> ();
authors.add(
new Author {
FirstName = "Steven",
LastName = "King"
});
authors.add(
new Author {
FirstName = "Homer",
LastName = ""
});
さて、私は自分の著者のリストを表すXMLを生成するために、XMLへのLINQを使用しようとしています。
new XElement("Authors",
new XElement("Author",
from na in this.Authors
select new XElement("First", na.First)))
私はそれが期待どおりブロックは、上記のXMLを生成しません。私は何を取得することはあります:
<Authors>
<Author>
<First>Steven</First>
<First>Homer</First>
</Author>
<Authors>
私が欲しいもののように見えるためのXML出力は次のとおりです。
<Authors>
<Author>
<First>Steven</First>
<Last>King</Last>
</Author>
<Author>
<First>Homer</First>
<Last></Last>
</Author>
</Authors>
私はそれがする必要があるように見えるためにXMLを取得する方法上の任意のヘルプは非常にいただければ幸いです!
解決
あなたは2番目のパラメータとして IEnumerable<XElement>
のクエリを渡す必要があり、
// Note the new way to initialize collections in C# 3.0.
List<Author> authors = new List<Author> ()
{
new Author { FirstName = "Steven", LastName = "King" }),
new Author { FirstName = "Homer", LastName = "" })
};
// The XML
XElement xml = new XElement("Authors",
from na in this.Authors
select new XElement("Author",
new XElement("First", na.FirstName),
new XElement("Last", na.LastName)));
それはあなたが必要結果が得られます。
他のヒント
私はあなたがC#を使用している知っているが、これは、あなたが真剣にあなたのソリューションにVB.NETのプロジェクトを追加することを検討すべきである1時間です。 XMLリテラルは、このために完全であり、それがはるかに容易になります。
あなたの著者のリストからXMLを取得するには、あなたはこれを行うだろう
Function GetAuthorsXML(authors As List(Of Author)) As XElement
Return <Authors>
<%= from a in authors _
select <Author>
<First><%= a.FirstName %></First>
<Last><%= a.LastName %></Last>
</Author> %>
</Authors>
End Function
所属していません StackOverflow