攻击Nvelocity C#/ .NET视图模板(.cs文件),我真的错过了Python关键字“in”(如“foo in list”)。检查列表/数组成员资格的内置是什么?
这是我的Python大脑想要做的事情:
#set ( $ignore = ['a','b','c'] )
<ul>
#foreach ( $f in $blah )
#if ( $f not in $ignore )
<li> $f </li>
#end
#end
</ul>
但我不确定正确的语法是什么,如果确实有的话。我快速浏览了Velocity Template Guide,但没有看到任何有用的东西。
答案 0 :(得分:4)
您可以使用List中的Contains函数,因此它应该是
List<int> list = new List<int>{1, 2, 3, 4, 5, 6, 7};
foreach(var f in blah)
if(list.Contains(f))
答案 1 :(得分:3)
“包含”确实是我想要的。
......在NVelocity模板中说:
#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
答案 2 :(得分:1)
string[] ignore = {"a", "b", "c" };
foreach( var item in blah ){
if( !ignore.Contains(item) )
{
// do stuff
}
}
答案 3 :(得分:0)
如果“ignore”是list,则上面有Contains()方法。 这将使你的代码像这样:
var ignore = new List<string>();
ignore.AddRange( new String[] { "a", "b", "c" } );
foreach (var f in blah) {
if (!ignore.conains(f)) {
//
}
}
答案 4 :(得分:0)
您可以使用List.Contains
注意,如果你有一个数组,你可以将数组转换为IList,或者创建一个新的List传递数组。
答案 5 :(得分:0)
不确定您使用的是哪个版本的C#,但如果您有Linq,则可以在阵列上使用Contains
。