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相同的那些值
结果:
ID Name Birthdate
1 name1 01.01.1991
4 name4 04.04.1994
6 name6 06.06.1996
如何在c#中浏览DataTable?
答案 0 :(得分:1)
写一个SQL Query
或Stored Procedure
,以便加入两个表,如您所描绘的那样。现在使用.Net中的DataTable查询。你会得到你需要的东西。
答案 1 :(得分:1)
不幸的是,没有简单的方法,AFAIK,加入2个表并自动获得第三个表,除非你愿意写一些代码....
您可以先使用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);
答案 2 :(得分:0)
您是将它们添加到具有已定义架构的实际数据库中,还是只是尝试在内存中执行此操作?如果是内存,我会将这些添加到DataSet中,然后您可以使用它来过滤数据集中的条件,您可以定义它们之间的关系。
答案 3 :(得分:-1)
您可能正在寻找在表格之间添加关系。请检查此link。
我猜你需要DataTables在同一个DataSet中(你可以将DataTables添加到DataSet中)。