powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как распарсить коллекцию
7 сообщений из 7, страница 1 из 1
Как распарсить коллекцию
    #38372569
Фотография Алкобобёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите как разобрать коллекцию в C#. Есть такой метод:

Код: c#
1.
 public IEnumerable<string> Test()   {  }



Код: c#
1.
var Response= Test();



В переменную Response приходят строки разделенные символов возврата каретки:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
N101
Серийник:12345
N203
Серийник:67890
N203
Склад:1
N101
Склад:3



Формат записей такой:
Код: vbnet
1.
N101 - это номер товара <CR><LF> Серийный номер ИЛИ Номер склада <CR><LF>



Нужно прочитать всю коллекцию в цикле foreach и разложить номера товаров и свойства по-массиву структур:


Код: c#
1.
2.
3.
4.
5.
6.
     public struct Tovar
       {
            string Number;
            string SerialCode;
            string Sklad;
        }



Никак не могу придумать, как разобрать эту коллекцию кодом C#.
...
Рейтинг: 0 / 0
Как распарсить коллекцию
    #38372643
Фотография lbppb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алкобобёр,

Если я все правильно понял:

Код: 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.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
        public struct Tovar
        {
            public string Number;
            public string SerialCode;
            public string Sklad;
        }

        static void Main(string[] args)
        {
            var Data = new List<string>() { @"N101" + "\n" + @"Серийник:12345" + "\n" + @"N203" + "\n" + @"Серийник:67890" + "\n" + @"N203" + "\n" + @"Склад:1" + "\n" + @"N101" + "\n" + @"Склад:3" };
            Data.Add(@"N201" + "\n" + @"Серийник:22345" + "\n" + @"N303" + "\n" + @"Серийник:77890" + "\n" + @"N303" + "\n" + @"Склад:2" + "\n" + @"N201" + "\n" + @"Склад:4");
            var tovar = new List<Tovar>();
            Tovar _tov = new Tovar();
            int i = 1;

            var Response = Data.Select(x => x);

            foreach (string res in Response)
            {
                string[] arr = res.Split('\n');
                foreach (string s in arr)
                {
                    if (s.IndexOf("N") != -1)
                    {
                        _tov.Number = s;
                    }
                    else if (s.IndexOf("Серийник") != -1)
                    {
                        _tov.SerialCode = s;
                        _tov.Sklad = string.Empty;
                    }
                    else
                    {
                        _tov.Sklad = s;
                        _tov.SerialCode = string.Empty;
                    }

                    if (i == 2)
                    {
                        tovar.Add(_tov);
                        i = 0;
                    }
                    i++;
                }
            }

            foreach (var row in tovar)
            {
                Console.WriteLine(row.Number + " Sklad or Serial: " + row.Sklad + row.SerialCode);
            }

            Console.ReadKey();
        }
    }
...
Рейтинг: 0 / 0
Как распарсить коллекцию
    #38373012
Фотография Алкобобёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lbppb,

Спасибо помогло!
Еще вопрос. Как получить следующий элемент в коллекции внутри цикла foreach?


Код: c#
1.
2.
3.
4.
5.
6.
 foreach (var el in Response)
 {
    if (el=="text") {    
          string str= // сюда нужно присвоить следующий элемент в коллекции Response
                                   }
            }
...
Рейтинг: 0 / 0
Как распарсить коллекцию
    #38373053
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алкобобёр,

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
var prevElement = "";
foreach (var el in Response)
 {
    if (prevElement=="text") {    
          string str= // сюда нужно присвоить следующий элемент в коллекции Response
                                   }
    prevElement = el;
            }
...
Рейтинг: 0 / 0
Как распарсить коллекцию
    #38373210
Фотография Алкобобёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pallaris,

а других способов нет? Как-то некрасиво выглядит.
...
Рейтинг: 0 / 0
Как распарсить коллекцию
    #38373290
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алкобобёр,

попробуй цикл for и оператор [], если больше нравится
...
Рейтинг: 0 / 0
Как распарсить коллекцию
    #38373316
Фотография lbppb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алкобобёр,

В принципе у IEnumerable есть
Код: c#
1.
.MoveNext

, но я не знаю как вы собираетесь этим пользоваться.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как распарсить коллекцию
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]