Как преобразовать строку в 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
}