我试图显示添加到我的列表中的第二个元素。该列表填充在名为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>
}
注意:TagsGroup
为IENumerable
但是我从这段代码得到的只是一封信,第n个字母取决于我输入的数字。或者,我试过这个,只是为了得到相同的结果(显示第一个字母):
<td>@tagsGroup.Name.First()</td>
<td>@tagsGroup.Label.First()</td>
<td>@tagsGroup.Description.First()</td>
我可能会把事情混在一起,因为我在列表和数组上有点生疏,所以我希望有人可以解释我的错误,以及我应该做些什么。
答案 0 :(得分:1)
如果您只需要显示添加到列表中的第二个元素,那么您就不需要循环。移除foreach
循环,只需使用index
,但由于TagsGroup
为IENumerable
,并且因为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
中只有一个项目。