在 C# 中测试 DataColumn 值的相等性

发布于 2024-09-07 09:29:30 字数 391 浏览 8 评论 0原文

我编写了一些代码来在列类型未知时测试 DataTables 中的列值之间的相等性。

像这样直接测试:

row["Foo"] == row["Bar"]

总是结果为 false,大概是因为对象的 Equals 实现使用了 ReferenceEquals。

所以我采取了:

row["Foo"].ToString() == row["Bar"].ToString()

这有效(至少对于我到目前为止遇到的情况),但它看起来有点,嗯,manky。

谁能想到我不应该这样做的原因,或者提出更好的方法?请记住,我在设计时不知道列类型,因此不能选择转换。

谢谢

大卫

I've written some code to test equality between column values in DataTables when the column type isn't known.

Testing directly like this:

row["Foo"] == row["Bar"]

always results in false, presumably because object's implementation of Equals uses ReferenceEquals.

So I've resorted to:

row["Foo"].ToString() == row["Bar"].ToString()

This works (at least for the cases I've encountered so far), but it seems a little, well, manky.

Can anyone think of a reason I shouldn't do it this way, or suggest a better way? Remember I don't know the column types at design time, so casting is not an option.

Thanks

David

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

梦里人 2024-09-14 09:29:30

尝试row["Foo"].Equals(row["bar"])

当您使用 == 比较对象并且没有预定义或用户定义的 == 运算符时,C# 将使用引用相等来比较它们。如果要调用Equals方法,需要将其写成方法调用。

Try row["Foo"].Equals(row["bar"]).

When you compare objects using == and there is no predefined or user-defined == operator, C# will compare them using reference equality. If you want to call the Equals method, you need to write it out as a method call.

琉璃梦幻 2024-09-14 09:29:30

row["Foo"].Equals(row["Bar"]) ?

row["Foo"].Equals(row["Bar"]) ?

灯下孤影 2024-09-14 09:29:30

如果它们是字符串,为什么不使用 Equals。

row["foo"].ToString().Equals(row["Bar"].ToString());

why not use Equals if they are string.

row["foo"].ToString().Equals(row["Bar"].ToString());
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文