这是我的问题.
我有2个数据表提交完全相同的内容,但我不明白为什么,当我比较他们的列既不能==也.Equals不能返回true.
public void btn_Source_Click(object sender, EventArgs e)
{
FichierSource.OuvertureSource();
FichierSource.OuvertureBanque(comboBox1);
int i = 0;
foreach (DataColumn colonne in FichierSource.DTSource.Columns)
{
if (colonne == FichierSource.DTBanque.Columns[i])
MessageBox.Show("Same");
else
MessageBox.Show("Not the same");
i++;
}
}
Run Code Online (Sandbox Code Playgroud)
两个数据表都是2个不同的字段,CSV但CSV都有这个内容:
Nom|Prenom|Date|numero
Jack|Jared|17.04.17|1626010548999
Daphne|Orli|08.02.18|1660101461799
Dphne|Thane|04.06.18|1635062807599
Odessa|Gannon|08.02.18|1626032546899
Charles|Jena|22.11.16|1626040845399
我解决了很多相同的问题,我认为我理解了==和.Equals之间的区别,但是这2个都没有返回true,为什么?
编辑:这是一个两个变量值的屏幕截图,在这里输入图像描述
DataTables,但他们DataColumns(其中有一个名字和其他属性之间的类型).==你想比较引用(你必须重载==运营商通过值FE来比较System.String呢)Equals也没有帮助,因为DataColumn不会覆盖它.因此Object.Equals使用它只是比较引用(类似于==).因为那些是不同的DataColumn实例(相同的名称但属于不同的表),Equals并且==,返回false如果要比较一个DataRow的所有字段与另一个字段DataRow可以使用DataRowComparerer.Default,则必须循环行而不是列:
var rowFieldComparer = DataRowComparer.Default;
for(int i = 0; i < FichierSource.DTSource.Rows.Count; i++)
{
if (rowFieldComparer.Equals(FichierSource.DTSource.Rows[i], FichierSource.DTBanque.Rows[i]))
MessageBox.Show("Same");
else
MessageBox.Show("Not the same");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
138 次 |
| 最近记录: |