在foreach循环中显示特定列表项

时间:2018-03-12 10:56:51

标签: c# asp.net-mvc list razor

我试图显示添加到我的列表中的第二个元素。该列表填充在名为HomeController的控制器中:

列表元素添加在HomeController中,在foreach循环中。它们是从XML文件中获取的。

tagsGroup.Add(...
{
    Name = node.Attributes["Name"].Value,
    Label = node.Attributes["Label"].Value,
    Description = node.Attributes["Description"].Value
});

然后,在我的视图中,我尝试获取一个特定的列表元素,如下所示:

<table class="table" id="container_attribute_group_secondary">
    <tr>
        <th>Name</th>
        <th>Label</th>
        <th>Description</th>
    </tr>

@foreach(myApp.Controllers.HomeController.TagsModel.TagsGroup.tagsGroup in Model.TagsGroup)
{
    <tr>
        <td>@tagsGroup.Name.[1]</td>
        <td>@tagsGroup.Label.[1]</td>
        <td>@tagsGroup.Description.[1]</td>
    </tr>
}

注意:TagsGroupIENumerable

但是我从这段代码得到的只是一封信,第n个字母取决于我输入的数字。或者,我试过这个,只是为了得到相同的结果(显示第一个字母):

<td>@tagsGroup.Name.First()</td>
<td>@tagsGroup.Label.First()</td>
<td>@tagsGroup.Description.First()</td>

我可能会把事情混在一起,因为我在列表和数组上有点生疏,所以我希望有人可以解释我的错误,以及我应该做些什么。

1 个答案:

答案 0 :(得分:1)

如果您只需要显示添加到列表中的第二个元素,那么您就不需要循环。移除foreach循环,只需使用index,但由于TagsGroupIENumerable,并且因为IEnumerable<T>界面不包含索引器,您可以使用{ {3}},像这样:

if (1 < @Model.TagsGroup.Count())
{
    <tr>
        <td>@Model.TagsGroup.ElementAt(1).Name</td>
        <td>@Model.TagsGroup.ElementAt(1).Label</td>
        <td>@Model.TagsGroup.ElementAt(1).Description</td>
    </tr>
}

此外,我还添加了一个检查来处理Index out of range错误,该错误适用于 IEnumerable 中只有一个项目。