2016-08-16 1 views
0

Ich habe 6 Eigenschaften:zwei Strings vergleichen und prüfen Sie den geänderten Wert in einem Bereich enthalten

oldprop1,oldprop2,oldprop3 
newprop1,newprop2,newprop3 

ich prüfen werde, wenn der Wert geändert. Wenn es sich in einer bestimmten Kombination von Möglichkeiten geändert hat, dann möchte ich es protokollieren.

Wenn diese fünf Änderungen passieren, dann sollte es protokolliert werden:

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

Was ich jetzt tue

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; 
} 

Gibt es einen besseren Weg, dies zu schreiben?

+1

Ein String enthalten, können nicht eine leere Zeichenfolge ist, entweder ein String ist, oder nicht, leer. – Kevin

Antwort

0

Sie können eine Methode schreiben, wo Sie in oldpropX passieren und newpropX und machen die Logik drin, dann tun Sie gerade:

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

SomeFunc() tun würde, die Equals Prüfung und die P, N, etc. prüfen.

1

besser verwenden Schalter Anweisung .hier den Code

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; 

     } 

    } 
Verwandte Themen