Есть строка, которая содержит информацию про транзакцию.
(Пример "John, Doe, “Lviv, Kleparivska 35, 4”, 500.0, 2022-27-01, 1234567, Water").
Нужно конвертировать эту строку в объект Transaction.
Код класса Transaction:
public class Transaction
{
public string Name { get; set; }
public string City { get; set; }
public decimal Payment { get; set; }
public DateTime Date { get; set; }
public long AccountNumber { get; set; }
public string Service { get; set; }
}
Вот мое решение:
public enum FieldsIndices
{
nameInd = 0,
surnameInd = 1,
cityInd = 2,
payentInd = 6,
dateInd = 7,
accountNumInd = 8,
serviceInd = 9
}
public class TransactionConverter
{
public Transaction StrToTransaction(string strTransaction)
{
string[] fields = strTransaction.Split(new char[] { ' ', ',', '“', '”' }, StringSplitOptions.RemoveEmptyEntries);
Transaction transaction = new Transaction()
{
Name = fields[(int)FieldsIndices.nameInd] + " " + fields[(int)FieldsIndices.surnameInd],
City = fields[(int)FieldsIndices.cityInd],
Payment = decimal.Parse(fields[(int)FieldsIndices.payentInd], CultureInfo.InvariantCulture),
Date = DateTime.ParseExact(fields[(int)FieldsIndices.dateInd], "yyyy-mm-dd", CultureInfo.InvariantCulture),
AccountNumber = long.Parse(fields[(int)FieldsIndices.accountNumInd]),
Service = fields[(int)FieldsIndices.serviceInd]
};
return transaction;
}
}
Вопрос: Как это можно сделать проще или оптимизирование? Код получился запутанным.