0

Clumsy Leaf Table エクスプローラーを使用して TableStorage データをエクスポートすると、次の xml が返されます。

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<feed xml:base="http://x.table.core.windows.net/" 
      xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" 
      xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" 
      xmlns="http://www.w3.org/2005/Atom">
    <title type="text">TestContents</title>
    <updated />
    <link rel="self" title="TestContents" href="TestContents" />

    <entry>
        <title type="text" />
        <updated />
        <author>
            <name />
        </author>
        <link rel="edit"  />
        <content type="application/xml">
            <m:properties>
                <d:PartitionKey>010100A</d:PartitionKey>
                <d:Title>ssq</d:Title>
                <d:Type>1</d:Type>
            </m:properties>
        </content>
    </entry>
    <entry>
        <title type="text" />
        <updated />
        <author>
            <name />
        </author>
        <link rel="edit"  />
        <content type="application/xml">
            <m:properties>
                <d:PartitionKey>010100B</d:PartitionKey>
                <d:Title>yy</d:Title>
                <d:Type>1</d:Type>
            </m:properties>
        </content>
    </entry>
    <entry>
        <title type="text" />
        <updated />
        <author>
            <name />
        </author>
        <link rel="edit" />
        <content type="application/xml">
            <m:properties>
                <d:PartitionKey>010100C</d:PartitionKey>
                <d:Title>xx</d:Title>
                <d:Type>1</d:Type>
            </m:properties>
        </content>
    </entry>
</feed>

次のコードを使用しています。

XNamespace a = "http://www.w3.org/2005/Atom";
XNamespace d = "http://schemas.microsoft.com/ado/2007/08/dataservices";
XNamespace m = "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata";
XElement feed = XElement.Load(@"c:\data\contents.xml");
var titles =
    from entry in feed.Descendants(a + "entry")
    let partitionKey = entry.Element(d + "PartitionKey")
    let content = entry.Element(a + "content")
    let properties = content.Element(m + "properties")
    let title = properties.Element(d + "Title")

    select title;

foreach (var title in titles)
{
    Console.WriteLine(title.Value);
}
Console.ReadLine();

XML ファイルからデータを取得するには。コードは完全に機能し、すべての要素の値が得られます。

<d:Title>xxx</d:Title>

partitionKey の値も取得したいと思います。これを行うために、行を変更しました

select title:

select partitionKey, title;

ただし、これによりエラーが発生します。

「'title' という名前のローカル変数をこのスコープで宣言することはできません。これは、子スコープで他の何かを示すために既に使用されている 'title' に別の意味を与えるためです。

partitionKey の値とタイトルを取得してコンソールに表示する方法を教えてください。

4

2 に答える 2

0
select partitionKey, title;

あなたが思っていることをしません。partitionKeyとの 2 つのプロパティを持つ匿名型のインスタンスを返したいようですtitle。これを行うには、匿名型を明示的に宣言する必要があります。

select new { partitionKey, title };

あなたのコード行が実際に何をするかについては、コンパイラ エラー テキストに基づいて、単純に不正な構文だと思います。

注意: VB.NET コンパイラはもう少し寛容です。Select partitionKey, titleの構文糖として扱われSelect New With { partitionKey, title }ますが、これはあなたが期待することです。

于 2013-06-16T11:35:55.767 に答える