Корректно оформить строку

130
28 сентября 2021, 21:50

Получаю из базы данных строку values. Она представляет собой числа через запятую

1,0,2,0,3,1,4,0,5,1

Первое число Id, второе - значение. (т.е Id = 1 - значение = 0, Id = 3 - значение = 1)

Эту строку мне уже далее нужно преобразовать в объект с первым типом Int, вторым Byte. Я делаю это так

List<object> values_obj = new List<object>();
List<int> list = (mysqlReader.GetString("values") != "") ? mysqlReader.GetString("values").Split(',').Select(n => Convert.ToInt32(n)).ToList() : new List<int>();
    for (int i = 0; i < list.Count;)
    {
       values_obj.Add(new object[]
       {
            Convert.ToInt32(list[i++]), 
            Convert.ToByte(list[i++])
       });
    }

Но как это оформить более правильно ( по-профессиональному)) ), посоветуйте пожалуйста? Не перечислять Id, значение через запятую, а сделать как-то так

{{"id":1, "value":0}, {"id":2, "value":1}} или {{1:0}, {2:1}}
Answer 1

Ваш код рабочий и тут мало что можно добавить, разве что может результат лучше иметь типизированный, например класс или Tuple

var str = "1,2,3,4,5,6,7,8";
var res = new List<(int, byte)>();
var splitted = str.Split(',');
for (int i = 0; i < splitted.Length; i += 2)
    res.Add((int.Parse(splitted[i]), byte.Parse(splitted[i + 1])));
res.ForEach(x => Console.WriteLine($"{x.Item1} - {x.Item2}"));

Вывод

1 - 2
3 - 4
5 - 6
7 - 8
READ ALSO
Поднять объект в воздух [закрыт]

Поднять объект в воздух [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

109
Удалить систему управления версиями в VS 2019

Удалить систему управления версиями в VS 2019

Возможно удалить систему управления версиями из решения в Visual Studio 2019 с помощью интерфейса?

178
Паттерн repository и смена ORM

Паттерн repository и смена ORM

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

102