質問

私は、次のプロパティを持つクラスを持っています:

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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top