0 / 0 / 0
Регистрация: 15.03.2022
Сообщений: 5

LINQ. При выводе на консоль появляются квадратные скобки

16.03.2022, 13:41. Показов 1263. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день прошу помощи.

При разработке Парсера на С# столкнулся с проблемой.
А именно при выводе на консоль появляться квадратные скобки.

Как убрать их если это возможно?

Код;

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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using Microsoft.Win32;
using System.Text.RegularExpressions;
 
namespace Parsing_4_0
{
    class Program
    {
        static void Main(string[] args)
        {
 
 
            Regex typgex = new Regex("(?<=NORM=).*");
 
            Regex Matgex = new Regex("(?<=MATERIAL=).*");
 
            string[] allfiles = Directory.GetFiles(@"C:\Users\Яков\Desktop\Parser", "*.mgf");
 
            //var profilist = new List<string>();
            //var mateilist = new List<string>();
            string profilist = " ";
            string mateilist = " ";
            string Products = " ";
            var allProducts = new List<string>();
            for (int i = 0; i < allfiles.Length; i++)
            {
 
                //string[] fai = File.ReadAllLines(allfiles[i], Encoding.Default);
 
 
                var fai = File.ReadLines(allfiles[i], Encoding.Default).ToList();
 
                      
                //Console.Write(allfiles[i]);
 
                foreach (string s in fai)
                {
                    if (typgex.IsMatch(s)) 
                    {
                        profilist = (typgex.Match(s).Value);
                    }
 
                    if (Matgex.IsMatch(s)) 
                    {
 
                        mateilist = (Matgex.Match(s).Value);
                    }
                     
                    Products =$"{profilist} {mateilist}";
 
                    
                }
                    allProducts.Add(Products);
                    //Console.WriteLine(Products);
                   
            }
                
            int numer = 1;
            var query1 = allProducts.GroupBy(x => x)
              .Where(g => g.Count() > 0)
              .ToDictionary(x => x.Key, y => y.Count())
              .Select(r => $"{numer++} {r}");
 
            
 
            Console.WriteLine("пример2");
 
            foreach (var fem in query1)
            {
                Console.WriteLine(fem);
                //Console.WriteLine(fem.Value);
            }
 
 
            Console.ReadLine();
 
        }
 
 
    }
}

Результат;

1 [FB100X10 St37-2, 1]
2 [FB140X16 St37-2, 3]
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.03.2022, 13:41
Ответы с готовыми решениями:

Круглые и квадратные скобки при операторе new
Требуются помощь в использовании оператора new! И так для начала вопросы для понимания, что произойдет при выполнении 2-ух вариантов кода...

Почему в цикле используются квадратные скобки при присвоении словаря?
&gt;&gt;&gt; dict = {} &gt;&gt;&gt; list = &gt;&gt;&gt; for x in range(0,100): ... dict = x ... list.append(dict) ... &gt;&gt;&gt; print...

Задание 1 Определить, корректно ли расставлены в строке круглые и квадратные скобки. Скобки могут быть вложенными. Входные данные: ab(h[b55](0123)jw(
помогите решить

10
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18308 / 14232 / 5368
Регистрация: 17.03.2014
Сообщений: 28,904
Записей в блоге: 1
16.03.2022, 14:52
Лучший ответ Сообщение было отмечено AndreyVorobey как решение

Решение

TugarinZmiy, вот тут переменная r это KeyValuePair
C#
67
              .Select(r => $"{numer++} {r}");
Значит идет вызов его перегрузки ToString() где и добавляются скобки. Хотите убрать? Выводите Key и Value сами.
C#
67
              .Select(r => $"{numer++} {r.Key} {r.Value}");
P.S. Использование переменной numer ведет к т.н. замыканию которое только усложняет код. Я бы использовал перегрузку Select которая сама нумерует элементы
C#
67
              .Select((r,idx) => $"{idx+1} {r.Key} {r.Value}");
1
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
16.03.2022, 15:08
OwenGlendower, это скорее не перегрузка ToString, а стандартное поведение обычного ToString при выводе экземпляра коллекции.
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
using System;
using System.Collections.Generic;
using System.Linq;
 
namespace ConsoleApp374
{
    class Program
    {
        static void Main(string[] args)
        {
            List<Data> datas = new List<Data>()
            {
                new Data(){ col1 = "c1", col2 = "c2" },
                new Data(){ col1 = "c3", col2 = "c4" }
            };
 
            foreach(var row in datas.Select(s => new { s.col1, s.col2 }))
            {
                Console.WriteLine(row);
            }
            foreach (var row in datas.ToDictionary(s1 => s1.col1, s2 => s2.col2 ))
            {
                Console.WriteLine(row);
            }
        }
    }
    public class Data
    {
        public string col1;
 
        public string col2;
    }
}
1
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18308 / 14232 / 5368
Регистрация: 17.03.2014
Сообщений: 28,904
Записей в блоге: 1
16.03.2022, 16:17
AndreyVorobey, а Console.WriteLine() не вызывает ToString() что-ли? Про "обыкновенность ToString()" тоже не понял. Вывод разный получается
Code
1
2
3
4
{ col1 = c1, col2 = c2 }
{ col1 = c3, col2 = c4 }
[c1, c2]
[c3, c4]
В первом цикле у нас анонимный класс для которого компилятор сам генерирует ToString(). Во-втором случае у нас снова KeyValuePair поведение ToString() которого мы уже выяснили. Коллекции тут тоже ни при чем т.к. они не влияют не форматирование своих элементов.
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
16.03.2022, 16:19
OwenGlendower, ну так Вы же сами написали
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Значит идет вызов его перегрузки ToString() где и добавляются скобки
я показал, что никакого переопределения нету
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18308 / 14232 / 5368
Регистрация: 17.03.2014
Сообщений: 28,904
Записей в блоге: 1
16.03.2022, 16:32
AndreyVorobey, вы показали что перегрузка ToString() анонимного класса отличается от перегрузки ToString() структуры KeyValuePair<TKey, TValue> которая добавляет квадратные скобки. В исходном коде под .NET Framework и .NET Core это видно невооруженным взглядом.

Цитата Сообщение от AndreyVorobey Посмотреть сообщение
ну так Вы же сами написали
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Значит идет вызов его перегрузки ToString()
Переменная имеет тип KeyValuePair у которого есть перегрузка ToString(). При подстановке в интерполируемую строку или вызове Console.WriteLine будет вызван ToString() для объекта. Все правильно я написал.
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
16.03.2022, 16:36
OwenGlendower, понял, показалось что про ручное переопределение писали. спасибо
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18308 / 14232 / 5368
Регистрация: 17.03.2014
Сообщений: 28,904
Записей в блоге: 1
16.03.2022, 17:19
AndreyVorobey, что такое ручное переопределение в контексте виртуальных методов вообще и ToString в частности?
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
16.03.2022, 17:21
OwenGlendower, я про override
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18308 / 14232 / 5368
Регистрация: 17.03.2014
Сообщений: 28,904
Записей в блоге: 1
16.03.2022, 17:24
AndreyVorobey, ясно. Спасибо.
0
0 / 0 / 0
Регистрация: 15.03.2022
Сообщений: 5
17.03.2022, 09:43  [ТС]
Спасибо помогло .Select((r,idx) => $"{idx+1} {r.Key} {r.Value}");
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.03.2022, 09:43
Помогаю со студенческими работами здесь

Появляются какие-то левые скобки при редактировании JSON файла
Открываю JSON, добавляю элементы и иногда встаёт криво(появляются посреди словаря скобки) , данную проблему наблюдаю уже около 3 месяцев,...

При выводе на экран появляются лишние символы
#include &lt;iostream&gt; // ??? printf #include &lt;string.h&gt; // ??? strtok bool IsPalindrom (char *word) { int i = -1; int j =...

Фигурные скобки при выводе переменных
Подскажите пожалуйста, как выводить переменные в фигурных скобках, например: {name}

При выводе на экране появляются непонятные рандомные числа
На этапе ознакомления с массивами столкнулся с такой проблемой #include&lt;stdio.h&gt; int main(){ int m ; int a =...

При выводе двумерного массива появляются какие-то кракозябры
Делаю игру в консоли, для отображения карты выбрал двумерный массив. Но если я компилирую то сначала выводится кусочек нужного мне...


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

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

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: показать затраченные материалы за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В качестве. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru