如何遍历两个表以创建另一个具有共同值的表

本文关键字:另一个 创建 何遍历 遍历 两个 | 更新日期: 2023-09-27 18:28:09

第一个数据表是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);

在第三个DataTabledt3中,我想要获得这些值​​其中ID是相同的

结果:

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

如何遍历c#中的DataTable?

如何遍历两个表以创建另一个具有共同值的表

不幸的是,除非您愿意编写一些代码,否则没有简单的方法,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);

编写一个SQL QueryStored Procedure,使其像您所描述的那样连接两个表。现在在.Net中对DataTable使用该查询。您将得到所需的内容。

您是将它们添加到具有已定义模式的实际数据库中,还是只是尝试在内存中执行此操作?如果是内存,我会将这些添加到数据集中,然后您可以使用该数据集来筛选条件,因为在数据集中,您可以定义它们的关系。

您可能正在寻找添加表之间的关系。检查此链接。

我想您需要DataTables在同一个DataSet中(您可以将DataTables添加到DataSet中)。