2016-05-13 19 views
0

I Ncalc bin mit der Anwesenheit von einigen Zeichenfolge zu bewerten WerteNcalc, wie Mehrwert-String-Parameter bewerten

if (@Xval = 'Z','T','F') 

dies gut funktioniert, wenn @xval als Parameter als Einzelwert eingegeben wird (@Xval = "Z"). Das wird eine echte Bewertung liefern. Ich schaue jetzt, um die gleiche Formel auszuwerten, wenn @ Xval sagen kann "Z", "H" mit anderen Worten Xval enthält diese 2 Werte und ich versuche zu finden, wenn 'Z' unter ihnen ist.

Das gleiche gilt für if (in (@Xval,'Z','H','M'),'T','F'), wo Im Suche nach dem Wert von Xval in einer Gruppe von Optionen (Z, H, M).

Kann ich dies über benutzerdefinierte Funktionen tun? Wenn das so ist, wie? Irgendwelche anderen Ideen?

Danke

+0

Nicht sicher Ncalc insbesondere, aber VB.Net hat '' Linq' Contains' Existenz von irgendeinem Gegenstand in einer Ansammlung. – Ian

Antwort

0

Sie

versuchen
Expression e = new Expression("if (iscontians("ZHM",@Xval),'T','F')", EvaluateOptions.IgnoreCase); 
    e.EvaluateFunction += evalFunction; 

schreiben eine benutzerdefinierte Funktion

private void evalFunction(string name, FunctionArgs args) 
     { 
      switch (name.ToUpper()) 
      { 

       case "ISCONTAINS": 
        if (args.Parameters.Length < 2) 
         throw new ArgumentException("isContains() takes at least 2 arguments"); 
        args.Result = args.Parameters[0].Evaluate().ToString().Contains(args.Parameters[1].Evaluate().ToString()); 
        break; 
       default: 
        break; 
      } 
     }