有人可以帮我把这个剃刀语法片段编译好吗?
@var count = 0;
@foreach (var column in Enumerable.Range(0, 20).Select(i => "Title " + i) {
if(count % 5 == 0) {
<tr>
}
<td>@column</td>
@if(count % 5 == 4) {
</tr>
}
count++;
}
答案 0 :(得分:4)
您不需要count
变量。我为达林的回答做了另一种解决方案:
@foreach (var pair in Enumerable.Range(0, 20).Select(i => new { Title = "Title " + i, Index = i }))
{
if(pair.Index % 5 == 0) {
@:<tr>
}
<td>@pair.Title</td>
if(pair.Index % 5 == 4) {
@:</tr>
}
}
正如您在Darin的回答和答案中所看到的,当您在一个街区内时,您不需要@
。此外,您的<tr>
和</tr>
看起来“不均匀”到编译器,因此我们必须使用@:<tr>
强制执行这些操作。最后,@var count = 0
必须位于@{var count = 0}
之类的块中。
更新:如果您确实需要一个索引(如果您没有使用Range()
),那么您可以执行以下操作(使用生成Select
的重载每个项目的索引):
@foreach (var pair in yourSource.Select((data, i) => new { Title = "Title " + data, Index = i }))
答案 1 :(得分:2)
@{
var count = 0;
}
@foreach (var column in Enumerable.Range(0, 20).Select(i => "Title " + i))
{
if(count % 5 == 0)
{
@:<tr>
}
<td>@column</td>
if(count % 5 == 4)
{
@:</tr>
}
count++;
}