将链接列表绑定到datagridview

时间:2017-10-20 08:32:08

标签: c# xml

我尝试了下面的代码。我创建了名称是天气的链接列表  在datagridview上显示数据。但是发生了错误(' npc'是一个像方法一样使用的变量)我已经尝试了很多次但是我无法修复错误。

这是我用于创建链接列表的代码

LinkedList<string> weather = new LinkedList<string>();

private void getW(string city)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("country", typeof(string));
            dt.Columns.Add("Date", typeof(string));
            dt.Columns.Add("Max Temp", typeof(string));
            dt.Columns.Add("Min Temp", typeof(string));
            dt.Columns.Add("Maxwindmph", typeof(string));
            dt.Columns.Add("Maxwindkph", typeof(string));
            dt.Columns.Add("Humidity", typeof(string));
            dt.Columns.Add("Cloud", typeof(string));
            dt.Columns.Add("Icon", typeof(Bitmap));

            city = txttext.Text;

            string uri = string.Format("http://api.apixu.com/v1/forecast.xml?={0}&days=7", city);

            XDocument doc = XDocument.Load(uri);

            LinkedList<string> weather = new LinkedList<string>();

            weather.AddLast ( (string)doc.Descendants("maxtemp_c").FirstOrDefault());
            weather.AddLast  ((string)doc.Descendants("mintemp_c").FirstOrDefault());
            weather.AddLast ( (string)doc.Descendants("maxwind_mph").FirstOrDefault());
            weather.AddLast  ((string)doc.Descendants("maxwind_kph").FirstOrDefault());
            weather.AddLast ((string)doc.Descendants("avghumidity").FirstOrDefault());
            weather.AddFirst ((string)doc.Descendants("text").FirstOrDefault());

         //   foreach (var npc in doc.Descendants("forecastday"))

            foreach (var npc in weather)
            {
                string iconUri = (string)npc("icon").FirstOrDefault();
                WebClient client = new WebClient();
                byte[] image = client.DownloadData("http:" + iconUri);
                MemoryStream stream = new MemoryStream(image);

                Bitmap newBitMap = new Bitmap(stream);
                dt.Rows.Add(new object[] {
                         (string)doc.Descendants("country").FirstOrDefault(),
                           (string)npc("date").FirstOrDefault(),
                           (string)npc("maxtemp_c").FirstOrDefault(),
                           (string)npc("mintemp_c").FirstOrDefault(),
                           (string)npc("maxwind_mph").FirstOrDefault(),
                           (string)npc("maxwind_kph").FirstOrDefault(),
                           (string)npc("avghumidity").FirstOrDefault(),

                           (string)npc("text").FirstOrDefault(),
                           newBitMap
                       });
            }
            dataGridView1.DataSource = dt;
        }

1 个答案:

答案 0 :(得分:0)

由于错误说nbc是一个变量,可能需要

   (string)doc.Descendants("country").FirstOrDefault(),
   (string)npc["date"].FirstOrDefault()

将所有 () 替换为 [] ,因为tou正在访问这些属性