Oppure

Loading
19/07/12 19:07
sps84
Ciao a tutti! Sto imparando a creare delle classi, e mi sono imbattuto in questo problema:

Ho un file .csv con questi dati:

prova asdf;1;2;34,4
prova wers;2;3;34,4
prova erew;32;1;2,2
prova q432;;;23,2


Ho un form con il seguente codice:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

using System.Linq;
using System.IO;

namespace LinqToCsv
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            string[] csvlines = System.IO.File.ReadAllLines("FileData.csv");

            

            var query = from art in csvlines
                        let row = art.Split(';')
                        select new Articolo
                        {
                            Descrizione = row[0].ToString(),
                            Qta = StringToInt(row[1].ToString()),
                            Numero = StringToInt(row[2].ToString()),
                            Prezzo = StringToDecimal(row[3].ToString())
                        };

            dataGridView1.DataSource = query.ToList();

        }

        private int StringToInt(string val)
        {
            int result;

            bool success;

            success = Int32.TryParse(val, out result);

            return result;
        }


        private decimal StringToDecimal(string val)
        {
            decimal result;

            bool succes;

            succes = decimal.TryParse(val, out result);

            return result;
        }
    }

    public class Articolo
    {        
        public string Descrizione { get; set; }

        private int _qta = 0;
        public int Qta
        {
            get { return _qta; }
            set
            {
                _qta = value;
            }
        }

        private int _numero = 0;
        public int Numero 
        { 
            get { return _numero; } 
            set 
            {
                _numero = value;
            } 
        }

        private decimal _prezzo = 0.000m;
        public decimal Prezzo
        { 
            get { return _prezzo; }
            set 
            {    
                _prezzo = value;
            }
        }
    }
}


Il tutto funzion senza problemi ma immagino che questa parte non sia molto carina:

         private int StringToInt(string val)
        {
            int result;

            bool success;

            success = Int32.TryParse(val, out result);

            return result;
        }


        private decimal StringToDecimal(string val)
        {
            decimal result;

            bool succes;

            succes = decimal.TryParse(val, out result);

            return result;
        }


Questa mi serve nel caso la stringa sia vuota, come posso integrarla nella classe?
Ultima modifica effettuata da sps84 19/07/12 19:08
aaa
19/07/12 19:36
Non ho capito il tuo problema ...
19/07/12 21:15
sps84
Che vorrei migliorare la classe Articolo gestendo internamente questa parte



    private int StringToInt(string val)
            {
                int result;
     
                bool success;
     
                success = Int32.TryParse(val, out result);
     
                return result;
            }
     
     
            private decimal StringToDecimal(string val)
            {
                decimal result;
     
                bool succes;
     
                succes = decimal.TryParse(val, out result);
     
                return result;
            }


aaa
20/07/12 20:53
pierotofy
Prova con:

{
   int iResult;
   decimal dResult;

   Descrizione = row[0].ToString(),
   Qta = Int32.TryParse(row[1].ToString(), out iResult) ?  iResult : 0,
   Numero = Int32.TryParse(row[2].ToString(), out iResult) ?  iResult : 0,
   Prezzo = decimal.TryParse(row[3].ToString(), out dResult) ? dResult : 0
};


Non sono sicuro che C# te lo lasci fare... ma tanto vale provare. Forse qualcuno piu' esperto puo' confermare o correggere.
Ultima modifica effettuata da pierotofy 20/07/12 20:58
Il mio blog: piero.dev
23/07/12 18:22
sps84
provato purtroppo non funziona, al limite inserirsco il metodo nella classe
aaa