当前位置:  开发笔记 > 编程语言 > 正文

DataRow比较无法按预期工作

如何解决《DataRow比较无法按预期工作》经验,为你挑选了2个好方法。

我想DataRow在一个循环中比较两个s.但是,以下if声明不会返回true:

if (dt1.Rows[0]["Name"] == dt2.Rows[b]["Name"]) {
    // This never executes
}

但是,如果我添加.ToString()到每个结尾DataRow,则该if语句返回true:

if (dt1.Rows[0]["Name"].ToString() == dt2.Rows[b]["Name"].ToString()) {
    // This now executes
}

"名称"列来自同一个表/列.所以问题很简单......我做错了什么?

谢谢
Stephen



1> itsmatt..:

这些单元格保存对象,因此您正在进行对象比较,这只是进行参考比较,这与值比较不同.它问的问题是"这两个对象真的是同一个对象吗?",基本上它们指的是同一个对象,因此是"参考比较".当您执行ToString()调用时,您正在进行字符串比较.这就是为什么它有效.

这是MS关于Operator ==和比较的讨论的链接.



2> Jon Skeet..:

正如它所说,你的第一个片段正在进行参考比较.呼叫的替代方法ToString是使用Object.Equals:

if (Object.Equals(dt1.Rows[0]["Name"], dt2.Rows[b]["Name"])) {
    // stuff
}

使用静态方法而不是实例方法的原因是为了避免空引用的问题.

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有