2009-07-27 8 views
3

Hacking auf einer Nvelocity C# /. NET-Ansicht Vorlage (.cs-Datei), ich vermisse wirklich das Python-Schlüsselwort "in" (wie in "foo in Liste"). Was ist das eingebaute für die Überprüfung der Liste/Array-Mitgliedschaft?Was ist das nvelocity/C# -Aquivalent von "if x in array"?

Dies ist, was mein Python Gehirn tun will:

#set ($ignore = ['a','b','c']) 
<ul> 
#foreach ($f in $blah) 
    #if ($f not in $ignore) 
    <li> $f </li> 
    #end 
#end 
</ul> 

Aber ich bin mir nicht sicher, was die richtige Syntax ist, wenn es in der Tat irgendeine. Ich hatte einen kurzen Blick auf die Velocity Template Guide, aber nichts nützliches entdeckt.

Antwort

3

"Enthält" ist in der Tat, was ich gesucht habe.

... Und in NVelocity Template-Sprache:

#set($ignorefeatures = ["a", "b"]) 
#foreach($f in $blah) 
    #if (!$ignorefeatures.Contains($f.Key)) 
     <tr><td> $f.Key </td><td> $f.Value </td></tr> 
    #end     
#end 
1
string[] ignore = {"a", "b", "c" }; 
foreach(var item in blah){ 
    if(!ignore.Contains(item)) 
    { 
     // do stuff 
    } 
} 
4

Sie können die Funktion in der Liste enthält verwenden, so sollte es sein

List<int> list = new List<int>{1, 2, 3, 4, 5, 6, 7}; 
foreach(var f in blah) 
if(list.Contains(f)) 
0

Wenn "Ignorieren" ist die Liste, ist es enthält() -Methode auf sie. , dass Ihr Code so etwas wie diese machen würde:

var ignore = new List<string>(); 
ignore.AddRange(new String[] { "a", "b", "c" }); 
foreach (var f in blah) { 
    if (!ignore.conains(f)) { 
     // 
    } 
} 
0

Sie List.Contains nutzen können, dass

Hinweis, wenn Sie einen Array haben Sie das Array zu IList werfen können, oder eine neue Liste erstellen das Array vorbei in.

0

Nicht sicher, welche Version von C# Sie verwenden würden, aber wenn Sie Linq haben, können Sie Contains für ein Array verwenden.

+0

Auch auf jedem enumerable;) –