在我的WP7项目中填充饼图时遇到了一些问题。目前,我的代码如下所示。我尝试了几种不同的方法从xml服务中取回数据,但没有成功。有没有人看到我做错了什么?
我现在得到的错误是,“无法隐式地将类型'System.Collections.Generic.IEnumerable‘转换为'System.Xml.Linq.XElement’。存在显式转换(您是否缺少强制转换?)”
XDocument XDocument = XDocument.Load(new StringReader(e.Result));
XElement Traffic = XDocument.Descendants("traffic").First();
XElement Quota = XDocument.Descendants("traffic").Attributes("quota");
ObservableCollection<PieChartItem> Data = new ObservableCollection<PieChartItem>()
{
new PieChartItem {Title = "Traffic", Value = (double)Traffic},
new PieChartItem {Title = "Quota", Value = (double)Quota},
};
pieChart1.DataSource = Data;发布于 2011-01-02 03:42:43
我猜这一行有编译错误:
XElement Quota = XDocument.Descendants("traffic").Attributes("quota");Descendants("traffic")的结果是一个IEnumerable,而不是一个XElement。在上面的代码行中,您已经获得了该枚举数的First,这就是您想要的项,不是吗?
配额行应为:
XElement Quota = Traffic.Attributes("quota");就风格而言,大多数人使用大小写较低的局部变量,如traffic、quota和data,以将它们与类级属性和成员区分开来。
更新:看起来Attributes("quota")返回IEnumerable<XAttribute>,因此配额行应该是:
XAttribute Quota = Traffic.Attributes("quota").FirstOrDefault();或者简化一下:
var traffic = XDocument.Descendants("traffic").First();
var quota = traffic.Attributes("quota").FirstOrDefault();我不想刻薄,但是修复像这样的编译器错误应该是你不应该来stackoverflow的东西。编译器错误本身会告诉您问题所在:该方法返回的类型与您所说的不同。使用var可以简化其中的一些操作。
https://stackoverflow.com/questions/4573310
复制相似问题