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

本文关键字:访问 元素 对象 错误 调试 | 更新日期: 2023-09-27 18:34:55

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

           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?)

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

我在那里被包裹了一会儿,但你的问题在于results是一个集合,所以你不能这样做 - 你需要在集合的一个项目上这样做:

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

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

或者,为了演示,您可以循环浏览结果:

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