我有一个具有这种结构的DataTable:
DataTable1
StudentName| StudentSurname | Status
Joe | Doe | OK
John | Smith | OK
和另一个具有这种结构的表:
DataTable2
foreach (DataColumn dc in DataTable1.Columns)
{
if (DataTable1.Contains("NAME"))
{
//how can I copy it??
}
}
我需要按照以下规则将所有行从DataTable1复制到DataTable2:
实现这一目标的最佳方法是什么?
编辑:到目前为止,我试图这样做:
Library/
CMakeLists.txt
main.cpp
src/
file1.cpp
include/
file1.h
Domains/
CMakeLists.txt
BlackJack/
CMakeLists.txt
src/
foo1.cpp
include/
foo1.h
...
libs/
tapkee/
CMakeLists.txt
include/
foo.hpp
....
我正在使用C#。
答案 0 :(得分:3)
使用给定的示例数据,您可以简单地使用DataTable.Copy方法复制具有结构和dataRows的整个数据表:
var copyDataTable = dataTable.Copy();
之后,您可以为第三列设置DataColumn.DefaultValue属性。添加新行时,将自动设置此值:
copyDataTable.Columns["Status"].DefaultValue = "OK";
答案 1 :(得分:1)
您可能希望将foreach语句基于行而不是列。您可以遍历检查特定数据行的值的行,然后更新该值。
我认为这段代码可以做你想做的事。
DataTable NewTable = OldDataTable;
NewTable.Columns.Add("Status",typeOf(String));
(向DataTable添加列:https://msdn.microsoft.com/en-us/library/hfx3s9wd%28v=vs.110%29.aspx)
ForEach( DataRow row in NewTable)
{
//you can reference a column by it's name to assign and check values.
//It's used here to get the column number: http://stackoverflow.com/questions/11340264/get-index-of-datatable-column-with-name
if (row["Name"] == "John")
{
row["Status"] = true;
}
}
如果您只希望最后一个DataTable的行与true匹配。使用另一个foreach遍历数据表并删除行[“Status”]!= true。
中的行