2016-08-16 3 views
0

У меня есть 6 свойства:Сравнить две строки и проверить измененное значение в диапазоне содержат

oldprop1,oldprop2,oldprop3 
newprop1,newprop2,newprop3 

я собираюсь проверить, если значение изменилось. Если он изменился в определенной комбинации способов, я хочу его зарегистрировать.

Если эти 5 изменения происходят, то оно должно быть зарегистрировано:

P to Y 
P to N 
blank to Y -- here blank means "" 
blank to N 
N to Y 

Что я делаю сейчас

if (!oldprop1.Trim().Equals(newprop1.Trim()) && (oldprop1.ContainsAny("P", "N","")) && newprop1.ContainsAny("Y", "N")) 
{ 
    //log me to DB 
} 
if (!oldprop2.Trim().Equals(newprop2.Trim()) && (oldprop2.ContainsAny("P", "N", "")) && newprop2.ContainsAny("Y", "N")) 
{ 
    //log me to DB 
} 
if (!oldprop3.Trim().Equals(newprop3.Trim()) && (oldprop3.ContainsAny("P", "N", "")) && newprop3.ContainsAny("Y", "N")) 
{ 
    //log me to DB 
} 

public static bool ContainsAny(this string haystack, params string[] needles) 
{ 
    foreach (string needle in needles) 
    { 
     if (haystack.Contains(needle)) 
      return true; 
    } 
    return false; 
} 

Есть ли лучший способ, чтобы написать это?

+1

Строка не может содержать пустую строку, строка либо есть, либо нет, пусто. – Kevin

ответ

0

Вы можете написать метод, в котором вы проходите в oldpropX и newpropX и сделать логику там, то вы просто сделать:

if (SomeFunc(oldprop1, newprop1) || SomeFunc(oldprop2, newprop2)...) 
{ 
// log to DB. 
} 

SomeFunc() будет делать Equals чек и P, N, и т.д.. проверить.

1

лучше использовать переключатель заявление .Здесь это код

public void CompareAndLog(string first, string second) 
    { 
     switch (first) 
     { 

      case "P": if (second == "Y" || second == "N") ;//log me to db 
       break; 
      case "N": if (second == "Y") ; //log me to db 
       break; 
      case "": if (second == "Y" || second == "N") ;//log me to db 
       break; 

     } 

    } 
Смежные вопросы