继上一个问题之后,我有以下代码:
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?)
答案 0 :(得分:4)
我在上下文中被包裹了一段时间,但你的问题在于results
是一个集合,所以你不能这样做 - 你需要在一个项目< / em>的集合:
System.Diagnostics.WriteLine(results.First().Ask);
除了First
之外,我本可以选择其他一些扩展方法来执行此操作,并且无论如何都会以不同方式执行此操作,这就是一个示例。您应首先检查您的收藏是否包含任何项目并进行相应检索。
或者,为了演示,您可以循环搜索结果:
foreach (var result in results) {
System.Diagnostics.WriteLine(result.Ask);
}