0

私は LINQ を初めて使用し、それを使用して XML をクエリします (信じられないほどです)。XML で見つかった子孫Listごとに新しいオブジェクトを作成する次の関数があります。list

public void ParseLists(XDocument xDoc)
{
    XNamespace ns = xDoc.Root.Name.Namespace;
    AddRange((
        from e in xDoc.Descendants(ns + "list")
        select new List
        {
            Id = (string)e.Element(ns + "id"),
            ItemsLink = (string)e.Element(ns + "items-link"),
            BatchLink = (string)e.Element(ns + "batch-link"),
            Name = (string)e.Element(ns + "name"),
            IsVendor = (string)e.Element(ns + "is-vendor"),
            Levels = (string)e.Element(ns + "levels")
        }).ToList());
}

XML がどのように見えるかのスニペットを次に示します。

<lists xmlns="www.namespaceurl.com" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <list>
    <batch-link>www.batchlinkurl.com</batch-link>
    <id>12345</id>
    . . .
  </list>
</lists>

質問:Listオブジェクトを作成するとき、要素の値を文字列として取得するのConvert.ToString()ではなく、最初に使用しました。(string)私が見つけたのは次のことでした:

Convert.ToString(e.Element(ns + "id"))戻ります<id>12345</id>

一方

(string)e.Element(ns + "id")戻り12345ます。

戻り値が異なる理由を誰かが説明できますか?

4

1 に答える 1

1

Convert.ToString(...)要素自体ToString()を文字列として返す、オーバーライドされたメソッドを呼び出します。

(string) ...要素のテキスト コンテンツを文字列として返す文字列 operator へのオーバーロードされた明示的な変換を使用します。

于 2012-08-22T14:02:02.917 に答える