Как преобразовать строку в double в C#

В следующем коде рейтинг при генерации ошибки

string[] allLines = File.ReadAllLines(@"Ratings.csv");

var parsed = from line in allLines
            let row = line.Split(';')
             select new
             {
                 UserId = row[0],
                 ItemId = row[1],
                 rating = row[3]
            };
var Rating = parsed.Select(x => new AddRating (x.UserId, x.ItemId,x.rating));

client.Send(new Batch(Rating));


var detailViews = parsed.Select(x => new AddDetailView(x.UserId, x.ItemId,x.rating ));

2 ответа

Решение

Исключение говорит вам, в чем проблема. Ваш конструктор ожидает удвоения, а вы передаете ему строки. Чтобы это исправить, вам нужно разобрать ваши строковые входы в двойные.

Как написан ваш код, вам придется изменить способ использования .Select заявление для того, чтобы разобрать его в достойной манере обработки ошибок.

Я бы предложил обменяться .Select для foreachзатем анализирует каждое свойство, затем создает экземпляр вашего класса.

foreach (var item in parsed)
{
    double userId = 0;
    double itemId = 0;
    double rating = 0;
    double.TryParse(item.UserId, out userId);
    double.TryParse(item.ItemId, out itemId);
    double.TryParse(item.rating, out rating);

    var rating = new AddRating(userId, itemId, rating);
    //**** do whatever you want with the new object
}
String st = "85.78";
Double db = Convert.ToDouble(st);

//Or With Error Hndler

try
        {
            string st = "85.78";
            Double db = Convert.ToDouble(st);
        }
catch (FormatException)
        {

            // Your error handler 

        }
Другие вопросы по тегам