2016-04-07 14 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()); 

       } 


      } 
     } 
    } 
} 

Benim hata alıyorum Int.parse .tostring dönüştürülemiyor? Neyi yanlış yapıyorum. Bir xml dosyası okumaya çalışıyorum ve beş sütuna sahip bir liste görünümüne gönderiyorum. Düzeltmek ve dosyayı almayı denemek için bu hatayı alıyorum.C# Linq ve Xml Okuma

+1

Bir try catch yakalayıp yığın izini gönderir misiniz? – codemonkeyliketab

+0

XML dosyası nasıl görünüyor? –

+0

Gayrimenkulde yaygın olan 1/2 banyo veya yatak odanızın bulunmadığından emin olun. – jdweng

cevap

0

Sen değeri düzgün ayrıştırılır ya da değil edilip edilemeyeceğini belirten değerlendirmek ve bir boolean dönecektir Int32.TryParse() yöntemi kullanarak düşünebilirsiniz:

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 
} 

Büyük olasılıkla herhangi oda numaralarının kullanılması ancak belki o Bir çift olarak ifade edilmelidir (ör. 2.5 Yatak Odası veya 3.5 Banyo). Bunları ortak senaryolar olarak nasıl ele alabileceğinizi düşünmek isteyebilirsiniz. Ayrıca, herhangi bir derleyici sorunundan kaçınmak için numaralı telefon numaralarını aradığınızdan emin olmanız gereken .Tostring() numaralı bir numaranız vardır.