Сравнение 2 строк с пустыми и пустыми значениями - PullRequest
0 голосов
/ 25 октября 2018

Лучший способ объяснить проблему - использовать 2 базы данных.Первая база данных содержит все данные в реальном времени.Вторая база данных содержит данные, которые мы периодически обновляем.Мне нужно определить, нужно ли обновить значение во второй базе данных.Скажем, поле называется Профессия.Чтобы дать несколько сценариев:

DB1 имеет значение null, DB 2 имеет значение null, без обновления.
DB1 имеет пустое значение, DB2 имеет пустое значение, без обновления.
DB1 имеет пустое значение, DB2 имеет нулевое значение, без обновления.
DB1 имеет нулевое значение, DB2 имеет пустое значение, без обновления.
DB1 имеет значение, DB2 имеет пустое, нулевое или любое другое значение, обновление.
DB1 имеетпустое, пустое пространство, DB2 имеет фактическое значение, обновление.

Для достижения этой цели я написал такой метод:

if (string.IsNullOrWhiteSpace(db1.Occupation)) db1.Occupation = string.Empty;
if (string.IsNullOrWhiteSpace(db2.Occupation)) db2.Occupation = string.Empty;
if (!db1.Occupation.Equals(db2.Occupation)) return false;
return true;

У меня вопрос, будет ли встроенный способдостичь сценариев, которые у меня есть выше?Я изучил if (String.Equals(str1, str2, StringComparison.OrdinalIgnoreCase) и object.Equals(str1, str2) Но я не думаю, что они обрабатывают вышеописанные сценарии из-за пробелов и пустой строки, как мне кажется, 2 разных значения.Может быть, я ошибаюсь, и именно в этом посте выясняется, есть ли лучший способ.

1 Ответ

0 голосов
/ 25 октября 2018

Будет ли это соответствовать вашим потребностям?

return ((db1.Occupation?.Trim() + "") == (db2.Occupation?.Trim() + ""));
  • ? защищает для исключения нулевой ссылки
  • .Trim() убирает пробелы
  • + "" конвертирует любое значение NULL в пустое
...