Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 23.04.2020
Сообщений: 8

Сопоставление двух текстовых файлов

15.05.2020, 21:57. Показов 1456. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеются два текстовых файла в первом строка состоящая из id, name, family. Пример (02 Курзинов Генадий)
Во втором (id, profession) Пример (02 Инженер)
Нужно чтобы поле id сопоставлялось из двух файлов и полученная информация (id name family profession) записывалась в третий файл.Сижу битый час не могу понять как это реализовать.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.05.2020, 21:57
Ответы с готовыми решениями:

Обработка текстовых файлов
помогите пожалуйста!!! есть программа: Дан исходный текстовый файл: Муз.Произведения в котором: -Название -Автор -Год -Стиль ...

Обработка текстовых файлов
Здравствуйте, у меня следующий вопрос по обработке текстовой информации есть текстовый файл следующего вида. и есть другой файл...

Открытие текстовых файлов на кириллице...
Дамы и господа! Следуя кипричеобразному учебнику по C# "Пять счастливых лиц" (Морган, Ивьен и т.д.), попытался пооткрывать...

4
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
15.05.2020, 22:57
UserNow,
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
using System;
using System.Collections.Generic;
using System.Linq;
 
namespace ConsoleApp73
{
    class Program
    {
        static void Main(string[] args)
        {
            List<Employee> employees = new List<Employee>()
            {
                new Employee() { tabNumber = "01", firstName = "Роман", lastName = "Ильин" },
                new Employee() { tabNumber = "02", firstName = "Геннадий", lastName = "Курзинов" }
            };
 
            List<Job> jobs  = new List<Job>()
            {
                new Job() { tabNumber = "01", nameJob = "Слерась" },
                new Job() { tabNumber = "02", nameJob = "Инженер" }
            };
 
            var data = employees.Join(jobs, a => a.tabNumber, b => b.tabNumber, (a, b) => new { tn = a.tabNumber, fn = a.firstName, ln = a.lastName, nj = b.nameJob }).Where(w => w.tn == "02");
 
            foreach (var row in data)
            {
                Console.WriteLine($"{row.tn} {row.fn} {row.ln} {row.nj}");
            }
        }
    }
 
    class Employee
    {
        public string tabNumber { get; set; }
        public string firstName { get; set; }
        public string lastName { get; set; }
    }
 
    class Job
    {
        public string tabNumber { get; set; }
        public string nameJob { get; set; }
    }
}
1
0 / 0 / 0
Регистрация: 23.04.2020
Сообщений: 8
16.05.2020, 15:25  [ТС]
Я попытался преобразовать свой код используя ваш ответ, но ничего особо не получилось

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
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
 
namespace ConsoleApp73
{
    class Program
    {
        static void Main(string[] args)
        {
            string path1 = @"C:\Users\admin\Desktop\1.txt";
            string path2 = @"C:\Users\admin\Desktop\2.txt";
            List<string> tmp = new List<string>();
            List<Employee> employees = new List<Employee>();
            List<Job> jobs = new List<Job>();
 
 
            using (StreamReader sr = new StreamReader(path1))
            {
                for (int i = 0; i < sr.Peek(); i++)
                {
                    string str = sr.ReadLine().ToString();
                    tmp.AddRange(str.Split(' '));
                }
                for (int i = 0; i < tmp.Count; i++)
                {
                    {
                        new Employee() { tabNumber = tmp[0], firstName = tmp[1], lastName = tmp[2], patronymic = tmp[3], dataWork = tmp[4], dataSpawn = tmp[5] };
                    };
                    tmp.RemoveRange(0, 6);
                }
                    
            }
            //Второй файл
            using (StreamReader sr2 = new StreamReader(path2))
            {
                tmp.Clear();
                for (int i = 0; i < sr2.Peek(); i++)
                {
                    string str = sr2.ReadLine().ToString();
                    tmp.AddRange(str.Split(' '));
                }
                    
                for (int i = 0; i < tmp.Count; i++)
                {
                    {
                        new Job() { tabNumber = tmp[0], nameJob = tmp[1] };
                    };
                    
                    tmp.RemoveRange(0, 2);
                }
                        
            }
 
            var data = employees.Join(jobs, a => a.tabNumber, b => b.tabNumber, (a, b) => new { tn = a.tabNumber, fn = a.firstName, ln = a.lastName, otch = a.patronymic, dW = a.dataWork, dS = a.dataSpawn, nj = b.nameJob });
 
            foreach (var row in data)
            {
                Console.WriteLine($"{row.tn} {row.fn} {row.ln} {row.otch} {row.dW} {row.dS} {row.nj}");
            }
        }
    }
 
    class Employee
    {
        public string tabNumber { get; set; }
        public string firstName { get; set; }
        public string lastName { get; set; }
        public string patronymic { get; set; }
        public string dataWork { get; set; }
        public string dataSpawn { get; set; }
 
 
    }
 
    class Job
    {
        public string tabNumber { get; set; }
        public string nameJob { get; set; }
    }
}
Добавлено через 2 минуты
Еще была попытка сделать это через структуры, но она тоже потерпела крах

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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
 
namespace Laba2
{
    class Program
    {
 
        //Структура первого файла
        struct Member1
        {
            public int id;
            public string name;
            public string family;
            public string otchestvo;
            public DateTime data;
            public DateTime dataspawn;
            
            public Member1(int id_, string name_, string family_, string otchestvo_, DateTime data_, DateTime dataspawn_)
            {
                id = id_;
                name = name_;
                family = family_;
                otchestvo = otchestvo_; 
                data = data_;
                dataspawn = dataspawn_;
            }
        }
 
        //Структура второго файла
        struct Member2
        {
            public int id;
            public string proffecion;
 
            public Member2(int id_, string proffecion_)
            {
                id = id_;
                proffecion = proffecion_;
            }
        }
 
        //Структура третьего файла
        struct Member3
        {
            public int id;
            public string name;
            public string family;
            public string otchestvo;
            public DateTime data;
            public DateTime dataspawn;
            public string proffecion;
 
            public Member3(int id_, string name_, string family_, string otchestvo_, DateTime data_, DateTime dataspawn_, string proffecion_)
            {
                id = id_;
                name = name_;
                family = family_;
                otchestvo = otchestvo_;
                data = data_;
                dataspawn = dataspawn_;
                proffecion = proffecion_;
            }
        }
 
        
        static List<Member1> Members1;
        static List<Member2> Members2;
        static List<Member3> Members3;
        static List<string> tmp = new List<string>();
        static string path1 = @"C:\Users\admin\Desktop\1.txt";
        static string path2 = @"C:\Users\admin\Desktop\2.txt";
 
 
        
 
        static void FileTwo()
        {
            using (StreamReader sr = new StreamReader(path2))
            {
                Members2 = new List<Member2>();
                tmp.Clear();
                for (int i = 0; i < sr.Peek(); i++)
                {
                    string str = sr.ReadLine().ToString();
                    tmp.AddRange(str.Split(' '));
                }
 
                for (int i = 0; i < tmp.Count; i++)
                {
                    Members2.Add(new Member2(Convert.ToInt32(tmp[0]), tmp[1]));
                    tmp.RemoveRange(0, 2);
                }
                Members2.ForEach(PrintTwo);
                
 
            }
        }
 
        static void FileOne()
        {
            using (StreamReader sr = new StreamReader(path1))
            {
                Members1 = new List<Member1>();
                for (int i = 0; i < sr.Peek(); i++)
                {
                    string str = sr.ReadLine().ToString();
                    tmp.AddRange(str.Split(' '));
                }
 
                for (int i = 0; i < tmp.Count; i++)
                {
                    Members1.Add(new Member1(Convert.ToInt32(tmp[0]), tmp[1], tmp[2], tmp[3], Convert.ToDateTime(tmp[4]), Convert.ToDateTime(tmp[5])));
                    tmp.RemoveRange(0, 6);
                }
                Members1.ForEach(PrintOne);
            }
        }
 
 
        static void PrintTwo(Member2 tmp)
        {
            Console.WriteLine(tmp.id + " " + tmp.proffecion);
        }
 
        static void PrintOne(Member1 tmp)
        {
            Console.WriteLine(tmp.id + " " + tmp.name + " " + tmp.otchestvo + " " + tmp.family + " " + tmp.data + " " + tmp.dataspawn);
        }
 
        static void Main(string[] args)
        {
            FileOne();
            FileTwo();
        }
}
}
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
17.05.2020, 12:15
Лучший ответ Сообщение было отмечено UserNow как решение

Решение

UserNow, не знаю, может у тебя было какое-то конкретное задание с использованием определенных методов и компонентов, но я свой вариант дописал, т.к. на мой взгляд в твоем слишком много всего
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
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
 
namespace ConsoleApp73
{
    class Program
    {
        public static List<Employee> employees = new List<Employee>();
 
        public static List<Job> jobs = new List<Job>();
 
        static void Main(string[] args)
        {
            ReadFilesAndFillLists();
 
            var data = employees.Join(jobs, a => a.tabNumber, b => b.tabNumber, (a, b) => new { tn = a.tabNumber, fn = a.firstName, ln = a.lastName, nj = b.nameJob }).Where(w => w.tn == "02");
 
            using (StreamWriter writer = new StreamWriter("TotalInfo.txt", false, Encoding.Default))
            {
                foreach (var row in data)
                {
                    writer.WriteLine($"{row.tn} {row.fn} {row.ln} {row.nj}");
                }
            }
 
            string[] fromEmployee = File.ReadAllLines("TotalInfo.txt", Encoding.Default);
 
            for (int i = 0; i < fromEmployee.Length; i++)
            {
                var elements = fromEmployee[i].Split(' ');
 
                Console.Write($"{elements[0]} {elements[1]} {elements[2]} {elements[3]}");
 
                Console.WriteLine();
            }
        }
 
        public static void ReadFilesAndFillLists()
        {
            string[] fromEmployee = File.ReadAllLines("Employee.txt", Encoding.Default);
 
            for (int i = 0; i < fromEmployee.Length; i++)
            {
                var elements = fromEmployee[i].Split(' ');
 
                employees.Add(new Employee() { tabNumber = elements[0], firstName = elements[1], lastName = elements[2] });                
            }
 
            string[] fromJob = File.ReadAllLines("Job.txt", Encoding.Default);
 
            for (int i = 0; i < fromJob.Length; i++)
            {
                var elements = fromJob[i].Split(' ');
 
                jobs.Add(new Job() { tabNumber = elements[0], nameJob = elements[1] });
            }
        }        
    }
 
    class Employee
    {
        public string tabNumber { get; set; }
 
        public string firstName { get; set; }
 
        public string lastName { get; set; }
    }
 
    class Job
    {
        public string tabNumber { get; set; }
 
        public string nameJob { get; set; }
    }
}
1
0 / 0 / 0
Регистрация: 23.04.2020
Сообщений: 8
17.05.2020, 14:01  [ТС]
AndreyVorobey, спасибо за помощь, все отлично работает. Сейчас попытаюсь разобраться как именно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.05.2020, 14:01
Помогаю со студенческими работами здесь

Программа статистики текстовых файлов на C#
Нужна программа для статистики текстовых файлов. Должна показывать: размер файла в байтах, количество букв, слов, предложений, а также...

Сравнение двух текстовых файлов
Добрый вечер! Задачка такая стоит: Сравнить два текстовых файла. Определить одинаковые ли они? То есть соответствуют ли соответствующие...

Сравнение двух текстовых файлов
Помогите пожалуйста с прогой) В С# уровень Hello World =( В С# выполнить сравнение двух текстовых файлов.

Перемешивание текста из двух текстовых файлов
Доброго времени суток всем! Помогите решить следующую задачу: Дан текстовый файл, в котором в каждой строке от 1 до 25 слов. Количество...

Построчное сравнение двух текстовых файлов
Имеются 2 текстовых файла, необходимо выполнить их построчное сравнение с выводом (например в Listview) отличающихся строк и ИХ ИНДЕКСОВ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru