2016-04-07 22 views
0
using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Xml.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace AS3_S5_CraigFenton 
{ 
    public partial class Form1 : Form 
    { 
     List<House> houseListings = new List<House>(); 

     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void buttongetListings_Click(object sender, EventArgs e) 
     { 
      if (openFileDialog1.ShowDialog() == DialogResult.OK) 
      { 
       XElement root = XElement.Load(openFileDialog1.FileName); 

       foreach(var House in root.Elements("House")) 
       { 
        House h = new House(); 

        h.HouseCode = House.Element("HouseCode").Value; 
        h.HouseType = House.Element("HouseType").Value; 
        h.Neighborhood = House.Element("HouseNeighborhood").Value; 
        h.Price = decimal.Parse(House.Element("Price").Value); 
        h.Bedrooms = int.Parse(House.Element("Bedrooms").Value); 

        houseListings.Add(h); 
       } 

       listViewlistings.Items.Clear(); 

       var sortedHouse = 
        from House in houseListings 
        orderby House.HouseType, House.Price 
        select House; 

       foreach (House h in sortedHouse) 
       { 
        ListViewItem listingsItem = new ListViewItem(); 

        listingsItem.Text = h.HouseCode; 
        listingsItem.SubItems.Add(h.HouseType); 
        listingsItem.SubItems.Add(h.Neighborhood); 
        listingsItem.SubItems.Add(h.Price.Tostring(0)); 
        listingsItem.SubItems.Add(h.Bedrooms.Tostring()); 

       } 


      } 
     } 
    } 
} 

私のエラーInt.parseは.tostringに変換できません。私は間違って何をしています。私はxmlファイルを読んで、5つの列を持つlistviewに投稿しようとしています。私はこのエラーを修正し、単にファイルをインポートしようとしています。C#LinqとXmlを参照してください

+1

try catchで囲み、スタックトレースをポストできますか? – codemonkeyliketab

+0

XMLファイルはどのように見えますか? –

+0

不動産に共通する1/2のトイレや寝室がないことを確認してください。 – jdweng

答えて

0

あなたの値が正しく解析されたりない可能かどうかを示すブール値を評価して返しますInt32.TryParse()方法を使用して検討する必要があります。

int bedrooms; 
if(Int32.TryParse(House.Element("Bedrooms").Value, out bedrooms)) 
{ 
    // Your parse was successful, so set it 
    h.Bedrooms = bedrooms; 
} 
else 
{ 
    // Otherwise it wasn't in the correct format (a breakpoint 
    // here would be useful 
} 

それはどんな部屋番号の使用は、しかし、可能性がある可能性がありますダブル(例:2.5 Bedroomsまたは3.5 Bathrooms)として表現することができます。そのため、これらを扱う方法を共通のシナリオとして考えることができます。

さらに、.Tostring()をいくつか呼び出しています。コンパイラの問題を避けるために、正しいケーシング.ToString()を使用するようにしてください。

関連する問題