Как пройти две таблицы, чтобы создать другую таблицу с общими значениями - PullRequest
0 голосов
/ 16 марта 2012

First Datatable это dt

var dt = new DataTable();
            dt.Columns.Add("ID");
            dt.Columns.Add("First Name");
   dt.Rows.Add(1,"name1");
   dt.Rows.Add(6,"name6");
   dt.Rows.Add(4,"name4");  

Вторая таблица dt2

var dt2 = new DataTable();
                dt2.Columns.Add("ID");
                dt2.Columns.Add("First Name");
                dt2.Columns.Add("Last Name");
                dt2.Columns.Add("Birthday");

       dt2.Rows.Add(1,"name1", "lastName1", 01.01.1991);
       dt2.Rows.Add(2,"name2", "lastName2", 02.02.1992);
       dt2.Rows.Add(3,"name3", "lastName3", 03.03.1993);
       dt2.Rows.Add(4,"name4", "lastName4", 04.04.1994);
       dt2.Rows.Add(5,"name5", "lastName5", 05.05.1995);
       dt2.Rows.Add(6,"name6", "lastName6", 06.06.1996);

в третьей DataTable dt3, я хочу получить те значения, где ID одинаков1007 *

результат:

ID   Name   Birthdate
1    name1  01.01.1991
4    name4  04.04.1994
6    name6  06.06.1996

как пройти через таблицу данных в c #?

Ответы [ 4 ]

1 голос
/ 16 марта 2012

К сожалению, AFAIK не существует простого способа объединить две таблицы и автоматически получить третью таблицу, если вы не хотите писать какой-то код ....

Вы можете присоединиться к ним, используя Linq:

var common = from c in dt.AsEnumerable()
             join x in dt2.AsEnumerable() on c.Field<string>("ID") equals x.Field<string>("ID")
             select new object[] { c["ID"],c["First Name"], x["Birthday"] };

И теперь вы можете создать таблицу назначения с нужной вам схемой:

DataTable dt3 = new DataTable();
dt3.Columns.Add("ID");
dt3.Columns.Add("Name");
dt3.Columns.Add("Birthdate");
foreach (var item in common)
   dt3.LoadDataRow(item.ToArray(),true);
1 голос
/ 16 марта 2012

Напишите SQL Query или Stored Procedure так, чтобы оно объединяло Две таблицы, как вы изобразили. Теперь используйте этот запрос для вашей таблицы данных в .Net. Вы получите то, что вам нужно.

0 голосов
/ 16 марта 2012

Вы добавляете их в реальную базу данных с определенной схемой или просто пытаетесь сделать это в памяти?Если память, я бы добавил их в DataSet, который вы затем можете использовать для фильтрации критериев, потому что в наборе данных вы можете определить их взаимосвязь.

0 голосов
/ 16 марта 2012

Возможно, вы ищете добавление отношений между вашими таблицами. Проверьте эту ссылку .

Полагаю, вам нужно, чтобы DataTable были в одном наборе данных (вы можете добавить DataTables в DataSet).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...