2016-04-07 2 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-файл и отправить его в listview с пятью столбцами. У меня есть эта ошибка, чтобы исправить и попытаться просто импортировать файл.C# Linq and Xml Reading

+1

Можете ли вы окружить попытку поймать и опубликовать трассировку стека? – 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 спальни или 3,5 ванные комнаты), поэтому вы можете подумать над тем, как вы можете справиться с ними, поскольку это обычные сценарии.

Кроме того, у вас есть несколько звонков на номер .Tostring(), в котором вы должны убедиться, что используете , чтобы избежать проблем с компилятором.