Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
3 / 2 / 1
Регистрация: 13.05.2013
Сообщений: 234
1

Массив типа decimal конвертировать в список типа List<KeyValuePair>

19.06.2019, 15:20. Показов 234. Ответов 3
Метки нет (Все метки)

Имеется строка:
"1, 0.014, 2, 0.015, 3, 0.079, 4, 0.674, 5, 0.016, 6, 0.012". Где 1,2,3,4,5,6 - ключ, значения типа decimal - значение.

Имеется класс
C#
1
2
3
4
5
public class KeyValuePair
{
    public decimal key { get; set; }
    public decimal value { get; set; }
}
Как сделать что-то подобное, только конвертировать в список типа List<KeyValuePair>?
C#
1
2
3
4
var dict = text.Split(new[] {';'}, StringSplitOptions.RemoveEmptyEntries)
               .Select(part => part.Split('='))
               .ToDictionary(split => split[0], split => split[1]);
В данном примере всё пакуется в словарь, и входная строка имеет формат с разделителями "key1=value1;key2=value2;key3=value3;"
p.s. все значения в строке типа decimal, для примера привёл интовые значения.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.06.2019, 15:20
Ответы с готовыми решениями:

Массив типа char конвертировать в массив типа BYTE
TCHAR str = {'8','B','0','1','8','B','4','9','0','4','A','3'} ... BYTE byte= {0x8B, 0x01, 0x8B,...

Список List. Добавляем строки типа char
Собственно, не получается в List добавлять корректно строки char. Нужно получить список из входных...

есть ли в Java 1.0, 1.1.x список типа List но с поддержкой иконок
собственно говоря вот такой вопрос. обычный список List из awt поддерживает только текстовый режим.

Разобрать код (Считывается файл побайтово в список типа List)
Всем добрый день, расскажите пожалуйста по шагам что тут происходит - я не совсем понимаю ...

__________________

Записывайтесь на профессиональные курсы С#-разработчиков‌
3
1354 / 802 / 434
Регистрация: 14.04.2015
Сообщений: 3,038
19.06.2019, 16:02 2
DEMON_RUS, так?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
using System;
using System.Collections.Generic;
using System.Linq;
 
namespace ConsoleApp58
{
    class Program
    {
        static void Main(string[] args)
        {
            string text = "1, 0.014, 2, 0.015, 3, 0.079, 4, 0.674, 5, 0.016, 6, 0.012";
   
            var dict = text.Split(new[] { ',',' ' }, StringSplitOptions.RemoveEmptyEntries).Select(part => part).ToList();
 
            List<KeyValuePair> LKeyValuePair = new List<KeyValuePair>();
 
            for (int i = 0; i < dict.Count; i++)
            {
                if (i % 2 == 0)
                {
                    LKeyValuePair.Add(new KeyValuePair { key = Convert.ToInt32(dict[i]), value = Convert.ToDecimal(dict[i + 1].Replace(".", ",")) });
                }              
            }
 
            foreach (KeyValuePair NewList in LKeyValuePair)
            {
                Console.WriteLine(NewList.key + " = " + NewList.value);
            }
        }
    }
    public class KeyValuePair
    {
        public int key { get; set; }
        public decimal value { get; set; }
    }
}
0
Модератор
9111 / 6399 / 1780
Регистрация: 21.04.2018
Сообщений: 19,020
Записей в блоге: 2
19.06.2019, 16:10 3
Цитата Сообщение от DEMON_RUS Посмотреть сообщение
Как сделать что-то подобное, только конвертировать в список типа List<KeyValuePair>?
C#
1
2
3
4
5
6
var dict = text.Split(new[] {';'}, StringSplitOptions.RemoveEmptyEntries)
               .Select(part => part.Split('='))
               .ToDictionary(split => split[0], split => split[1]);
/// В данном примере всё пакуется в словарь, 
/// и входная строка имеет формат с разделителями "key1=value1;key2=value2;key3=value3;"
var list = dict.ToList();
0
17 / 2 / 5
Регистрация: 31.05.2015
Сообщений: 80
19.06.2019, 16:15 4
Можно еще так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
using System.Text.RegularExpressions;
 
            String input = "1, 0.014, 2, 0.015, 3, 0.079, 4, 0.674, 5, 0.016, 6, 0.012";
            String pattern = @"(?<Key>\d*), (?<Value>\d*\.\d*)";
 
            List<KeyValuePair> pairs = new List<KeyValuePair>();
            foreach (Match m in Regex.Matches(input,pattern))
            {
                KeyValuePair pair = new KeyValuePair();
                pair.key = Convert.ToInt32(m.Groups["Key"].Value);
                pair.value = Convert.ToDecimal(m.Groups["Value"].Value.Replace('.',','));
                pairs.Add(pair);
            }
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.06.2019, 16:15

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Как конвертировать переменную типа Double в переменную типа String?
Как конвертировать переменную типа Double в переменную типа String. И наоборот.

Динамические массивы. Дан массив записей из полей типа Char, Word, Byte. Преобразовать его в массив типа Longint
FreePascal Выполнить обработку массивов в соответствии с заданием. Предусмотреть описание...

Вывод типа decimal на View
Доброго времени суток уважаемые форумчане. Есть View класс содержащий свойство с типом decimal. ...

извлечь квадратный корень из числа типа decimal
Возникла необходимость работать с типом decimal. Но sqrt вот с ним не работает. Не подскажете, как...

Как преобразовать числа типа Decimal к Real ?
В некоторых случаях, например в астрономических расчетах, чтобы не потерять точность ...

В переменную какого типа можно запихнуть двумерный массив типа String
тип Variant это правильно или можно урезать? Waches показывает тип массива String а тип переменной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.