0

前の質問に続いて、私は次のコードを持っています:

           var results =
            from result in xml.Descendants(ns + "GetMetalQuoteResult")
            select new
            {
                Type = result.Element(ns + "Type").Value,
                Currency = result.Element(ns + "Currency").Value,
                Date = result.Element(ns + "Date").Value,
                Time = result.Element(ns + "Time").Value,
                Rate = (decimal)result.Element(ns + "Rate"),
                Bid = (decimal)result.Element(ns + "Bid"),
                BidTime = result.Element(ns + "BidTime").Value,
                ExpTime = result.Element(ns + "ExpTime").Value,
                DisplayTime = result.Element(ns + "DisplayTime").Value,
                DisplayDate = result.Element(ns + "DisplayDate").Value,
                Ask = (decimal)result.Element(ns + "Ask"),
                AskTime = result.Element(ns + "AskTime").Value,
            };

これらの要素にアクセスするにはどうすればよいですか?

たとえば、要素「Ask」の値にアクセスしたい場合、次のコードを使用できないのはなぜですか。

System.Diagnostics.WriteLine(results.Ask);

次のエラーが発生するため、私は愚かなことをしていますか?

Error   2   'System.Collections.Generic.IEnumerable<AnonymousType#1>' does not contain a definition for 'Ask' and no extension method 'Ask' accepting a first argument of type 'System.Collections.Generic.IEnumerable<AnonymousType#1>' could be found (are you missing a using directive or an assembly reference?)
4

1 に答える 1

4

私はそこでしばらくの間文脈に包まれました、しかしあなたの問題はそれがコレクションであることにあります、それであなたはそれをすることができません-あなたはコレクションの1つのアイテムresultsでそれをする必要があります:

System.Diagnostics.WriteLine(results.First().Ask);

これを行うために、他の多くの拡張メソッドを選択することもできますが、Firstとにかく別の方法で行うこともできます。これは一例です。まず、コレクションにアイテムが含まれているかどうかを確認し、それに応じて取得する必要があります。

または、デモンストレーションのために、結果をループすることもできます。

foreach (var result in results) {
  System.Diagnostics.WriteLine(result.Ask);
}
于 2012-05-22T18:32:26.223 に答える