Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Radzhab
12 / 12 / 1
Регистрация: 18.06.2011
Сообщений: 413
1

Как сравнить два csv файла по определенной колонке?

19.08.2016, 21:22. Просмотров 545. Ответов 3
Метки нет (Все метки)

Есть два файла

C#
1
2
var csv1 = File.ReadAllLines("1.csv");
var csv2 = File.ReadAllLines("2.csv");
Я сперва использовал стандартное сравнение с помощью следующего кода

C#
1
var rezCSV = buffList1.Except(csv2).Union(csv2.Except(csv1)).ToList();
Все хорошо, теперь стоит вопрос в том как использовать вышеприведенный код по определенным столбцам в csv-файле. Как сделать чтобы сравнение шло по второй ячейке csv-файла? Разделитель между колонками ;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.08.2016, 21:22
Ответы с готовыми решениями:

Как сравнить файл, находящийся по определенной ссылке в интернете с файлом имеющимся у себя на жестком
Добрый день. необходимо скачивать огромную кучу файлов с интернета. Частично...

Построчно сравнить два текстовых файла и вывести строки, которых нет или отличаются
Есть 2 текстовых файла, необходимо их построчно сравнить и вывести строки...

Сравнить два изображения
Привет всем! Подскажите, пожалуйста, возможно ли каким-то образом средствами...

Как проверить значение в определенной строке и колонке из БД?
нужно проверить в определенном поле одну опред. строку ) скажем поле 8 строка...

Как правильно перенести из CSV файла в Sql Таблицу? Код вроде прав, но выдает ошибку
Здравствуйте! Не могу разобраться. пытаюсь перенести из csv файла в Sql...

3
golubyatnikovtv
176 / 176 / 95
Регистрация: 30.04.2016
Сообщений: 478
Завершенные тесты: 3
22.08.2016, 11:34 2
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var csv1 = File.ReadAllLines("");
            var matrix1 = new List<List<string>>();
            foreach (var s in csv1)
            {
                var cells = s.Split(new[] {';'}, StringSplitOptions.RemoveEmptyEntries).ToList();
                matrix1.Add(cells);
            }
 
            var csv2 = File.ReadAllLines("");
            var matrix2 = new List<List<string>>();
            foreach (var s in csv2)
            {
                var cells = s.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries).ToList();
                matrix2.Add(cells);
            }
 
            var columnNumber = 2;
 
            var columnsAreEquals = matrix1.Select(r => r[columnNumber]).SequenceEqual(matrix2.Select(r=>r[columnNumber]));
Не знаю на сколько большой у Вас csv. Этот код можно еще оптимизировать, например, сплитить только до нужной колонки.
0
Radzhab
12 / 12 / 1
Регистрация: 18.06.2011
Сообщений: 413
22.08.2016, 13:17  [ТС] 3
Спасибо за решение, однако в вашем примере сравнение по одной колонке. А мне нужно по двум разным колонкам
0
golubyatnikovtv
176 / 176 / 95
Регистрация: 30.04.2016
Сообщений: 478
Завершенные тесты: 3
22.08.2016, 13:26 4
Цитата Сообщение от Radzhab Посмотреть сообщение
по двум разным колонкам
А в чем проблема?

C#
1
2
3
var firstColumnIndex = 2;
var secondColumnIndex = 3;
var columnsAreEquals = matrix1.Select(r => r[firstColumnIndex]).SequenceEqual(matrix2.Select(r=>r[secondColumnIndex]));
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.08.2016, 13:26

Как сравнить два файла?
Хочу сравнить два файла быстро, но не по байтно. Проблема: Есть сервер и...

Как сравнить два текстовых файла?
Скажите пожалуйста как сравнить два тхт являются ли их содержания одинаковыми?...

Как сравнить два текстовых файла?
Необходимо сравнить два текстовых файла с помощью очереди. Может, у кого есть...


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

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

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