kav@94 Ответов: 1

Как я могу проверить наличие равного количества строк и равных имен файлов в datatable с помощью C#


В моем приложении у меня есть три таблицы данных

код c# для трех таблиц данных

//Datatable1

DataView view = wavdt.DefaultView;
view.Sort = "Wfname";
DT1 = view.ToTable();

//Datatable2

DataView view = basedt.DefaultView;
view.Sort = "Bfname";
DT2 = view.ToTable();  

//Datatable3

DataView view = templatedt.DefaultView;
view.Sort = "Tfname";
DT3 = view.ToTable();

Мне нужно убедиться, что все три таблицы данных содержат одинаковое количество строк и одинаковые имена файлов во всех трех таблицах данных.Я знаю, что мы можем написать условие для просмотра (dt1.rows.count == dt2.rows.count==dt3.rows.count) для количества строк, но как я могу проверить наличие одинаковых имен файлов во всех трех таблицах данных.Мои имена файлов будут одинаковыми, но расширения будут разными.

Если у меня есть 123. wmv в datatable1, у меня будет 123.doc во втором datatable и тот же 123 в третьем datatable либо с расширением doc, либо docx.Если у меня есть пять строк в 1-й таблице данных, мне нужно убедиться, что мои оставшиеся таблицы данных содержат те же пять строк с теми же именами файлов, если нет, то я должен показать сообщение об ошибке и остановить выполнение моих следующих строк кода

Что я уже пробовал:

поскольку я очень новичок, я не мог найти способ сделать это, и я не мог двигаться вперед, чтобы сделать это

Graeme_Grant

Ты вампир-помощник. Мы не являемся вашей службой отладки. Вам нужно научиться пользоваться отладчиком..

Graeme_Grant

Не совсем судя по вашей истории. Не ленитесь, используйте поиск Google: проверьте таблицы данных на наличие дубликатов данных[^]

kav@94

если вы можете помочь мне помочь мне в противном случае не отправляйте ответ на мой вопрос каждый раз когда сообщение приходит в мой почтовый ящик я проверяю сообщения есть ли у меня решение но вы будете отвечать как вампир и все что бесполезно и пустая трата времени для нас обоих я отправил этот вопрос так как я не мог получить решение если вы можете дать мне решение я буду счастлив в противном случае пожалуйста не отвечайте если вы не можете дать мне решение

Graeme_Grant

Я не буду писать ваш код для вас, но вместо этого дал вам указания на то, как делать сравнения в таблицах данных. Теперь вам нужно засучить рукава и написать код. Это называется "Программирование".

Если вы ждете, что кто-то напишет код для вас, то вы пришли не в то место. Вместо этого отправляйтесь туда, где понравится другим программистам: Нанимайте фрилансеров и находите работу фрилансера онлайн-Freelancer[^]

kav@94

спасибо

1 Ответов

Рейтинг:
0

Karthik_Mahalingam

см. этот пример

DataTable dt1 = new DataTable();
           dt1.Columns.Add("ColumnName");
           dt1.Rows.Add("aa.pdf");
           dt1.Rows.Add("bb.txt");
           DataTable dt2 = new DataTable();
           dt2.Columns.Add("ColumnName");
           dt2.Rows.Add("aa.pdf");
           dt2.Rows.Add("bb.txt");
           DataTable dt3 = new DataTable();
           dt3.Columns.Add("ColumnName");
           dt3.Rows.Add("aa.pdf");
           dt3.Rows.Add("bb.txt");
           if (dt1.Rows.Count == dt2.Rows.Count && dt2.Rows.Count == dt3.Rows.Count) {
               string[] dt1Names = dt1.Rows.OfType<DataRow>().Select(row => System.IO.Path.GetFileNameWithoutExtension(row["ColumnName"].ToString()).ToLower()).ToArray();
               string[] dt2Names = dt2.Rows.OfType<DataRow>().Select(row => System.IO.Path.GetFileNameWithoutExtension(row["ColumnName"].ToString()).ToLower()).ToArray();
               string[] dt3Names = dt3.Rows.OfType<DataRow>().Select(row => System.IO.Path.GetFileNameWithoutExtension(row["ColumnName"].ToString()).ToLower()).ToArray();
               if (dt1Names.Intersect(dt2Names).Count() == dt1.Rows.Count && dt1.Rows.Count == dt2Names.Intersect(dt3Names).Count())
               {
                   // file names matching
               }
               else {
                   // not matching
               }

           }

это можно сделать многими способами, это один из них
относиться LINQ Except, Intersect и Union метод / оператор в C#[^]
Path.GetFileNameWithoutExtension Метод (Строка) (System.IO)[^]