Тестирование равенства значений DataColumn в C # - PullRequest
1 голос
/ 25 июня 2010

Я написал некоторый код для проверки равенства между значениями столбцов в DataTables, когда тип столбца неизвестен.

Непосредственное тестирование, подобное этому:

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

всегда приводит к ложному, предположительно потому что реализация объекта Equals для объекта использует ReferenceEquals.

Итак, я прибегнул к:

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

Это работает (по крайней мере, в тех случаях, с которыми я сталкивался до сих пор), но этокажется немного, ну, мужественно.

Может кто-нибудь придумать причину, по которой я не должен делать это таким образом, или предложить лучший способ?Помните, что я не знаю типы столбцов во время разработки, поэтому приведение не возможно.

Спасибо

Дэвид

Ответы [ 3 ]

3 голосов
/ 25 июня 2010

Попробуйте row["Foo"].Equals(row["bar"]).

Когда вы сравниваете объекты, используя ==, и нет предопределенного или определенного пользователем оператора ==, C # будет сравнивать их, используя равенство ссылок. Если вы хотите вызвать метод Equals, вам нужно записать его как вызов метода.

1 голос
/ 25 июня 2010

почему бы не использовать Equals, если они строковые.

row["foo"].ToString().Equals(row["Bar"].ToString());
1 голос
/ 25 июня 2010

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

...