调试C#错误。访问对象中的元素

时间:2012-05-22 18:29:06

标签: c# asp.net-mvc asp.net-mvc-3 object

继上一个问题之后,我有以下代码:

           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,
            };

如何访问这些元素?

e.g。如果我想访问元素'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?)

1 个答案:

答案 0 :(得分:4)

我在上下文中被包裹了一段时间,但你的问题在于results是一个集合,所以你不能这样做 - 你需要在一个项目< / em>的集合:

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

除了First之外,我本可以选择其他一些扩展方法来执行此操作,并且无论如何都会以不同方式执行此操作,这就是一个示例。您应首先检查您的收藏是否包含任何项目并进行相应检索。

或者,为了演示,您可以循环搜索结果:

foreach (var result in results) {
  System.Diagnostics.WriteLine(result.Ask);
}