【发布时间】:2014-06-02 14:26:33
【问题描述】:
我有一个包含天气预报数据的 XML 文件。我正在尝试通过 XDocument 查询它。我有一个名为“Forecast”的类,我正在尝试创建这种类型的对象并使用 LINQ 填充它的属性,如下所示:
public Forecast CurrentConditions(string stateName, string cityName)
{
var data = from i in weatherResponse.Descendants("current_observation")
select new Forecast
{
TemperatureC = Convert.ToDouble(i.Element("temp_c").Value)
//Setting other properties here
};
return data;
}
我的“预测”类只包含这样的属性:
class Forecast
{
public double TemperatureF { get; set; }
public double TemperatureC { get; set; }
public string RelativeHumidity { get; set; }
}
但是 VS 突出显示 return data; 并说 "Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<WeatherUnderground1.Forecast>' to 'WeatherUnderground1.Forecast'. An explicit conversion exists (are you missing a cast?)"
所以如果我把它改成:
return (Forecast)data;
我收到异常“未处理的异常:System.NullReferenceException:对象引用未设置为对象的实例。”
问题
我做错了什么,返回Forecast对象的正确方法是什么?
【问题讨论】:
-
试试
return data.FirstOrDefault() -
使用它来获取值而不是
TemperatureC = (double)i.Element("temp_c")
标签: c# xml linq linq-to-xml linq-to-objects