我有两个DataTable。我只是想将其中一个保存在另一个中,然后在我的“临时表”上更改列名。
我的问题是每次我从一个表中更改列名时,它会在另一个表中自动更改。
声明:
public DataTable DataTablefromDataBaseFormDataType { get; private set; }
如何获得第一个DataTable的值:
DataTablefromDataBaseFormDataType = ((FormProject)Fproject).DataTablefromDataBaseFormProject;
如何复制和更改列名称:
DataTableUsedToPlotGraphTemp = DataTablefromDataBaseFormDataType;
DataTableUsedToPlotGraphTemp.Columns[column_to_use].ColumnName = "temp";
其余代码(如果需要)
DataTableUsedToPlotGraphTemp = DataTablefromDataBaseFormDataType;
DataTableUsedToPlotGraphTemp.Columns[column_to_use].ColumnName = "temp";
//这一点! - 当我更改DataTableUsedToPlotGraphTemp时,它也在改变// DataTableUsedToPlotGraphTemp
if (ReceiveStartDate == null && ReceiveEndDate == null)
{
ReceiveStartDate = DataTableUsedToPlotGraphTemp.Rows[0][4].ToString();
ReceiveEndDate = DataTableUsedToPlotGraphTemp.Rows[DataTableUsedToPlotGraphTemp.Rows.Count-1][4].ToString();
}
if (ReceiveNameFile != "All files")
{
string query = $"TIME_FORMATTED >='{ReceiveStartDate}' AND TIME_FORMATTED <='{ReceiveEndDate}'";
DataRow[] result = DataTableUsedToPlotGraphTemp.Select(query);
foreach (DataRow row in result)
{
//MessageBox.Show(row[0].ToString());
DataTableUsedToPlotGraph.ImportRow(row);
}
}
else
{
DataRow[] result = DataTablefromDataBaseFormDataType.Select("FILE_NAMES = '"+ ReceiveNameFile + "'");
foreach (DataRow row in result)
{
//MessageBox.Show(row[0].ToString());
DataTableUsedToPlotGraph.ImportRow(row);
}
}
}
我已经多次调试,看看它是否发生在代码的其他地方。在更改列名称的那一刻,它会针对两个DataTables进行更改。
任何人都可以帮助我吗? 谢谢。
答案 0 :(得分:2)
您没有两个不同的window.setTimeout
(参考类型)但只有一个:
DataTables
所以,如果你换一个,你就会改变它们。这些只是引用同一对象的变量。您可以使用DataTableUsedToPlotGraphTemp = DataTablefromDataBaseFormDataType;
:
DataTable.Copy
如果您只需要一个包含相同列的空表,则可以使用DataTable DataTableUsedToPlotGraphTemp = DataTablefromDataBaseFormDataType.Copy();
。
也许this解释得更好一点:
对于值类型,值是信息本身。供参考 类型,该值是一个引用,可能是
DataTable.Clone
或可能是一种方式 导航到包含信息的对象。例如,将变量视为一张纸。它可能 有价值&#34; 5&#34;或&#34;假&#34;写在上面,但它不能拥有我的 房子......它必须有我家的方向。那些 方向相当于参考。特别是两个 人们可能会有不同的纸张包含相同的纸张 到我家的方向 - 如果有人遵循这些指示 把我的房子涂成红色,然后第二个人会看到那个变化 太。如果他们在纸上只有我房子的单独照片, 那么一个人给他们的纸着色不会改变另一个人 人的论文。