使用foreach循环获取列表中的最后3个项目
本文关键字:最后 3个 项目 列表 foreach 循环 获取 使用 | 更新日期: 2023-09-27 18:04:48
如何从图像列表中获得最后3项?我正在使用foreach
循环,因此我可以获得单个图像并访问其属性,例如img标记的Url
。
<div>
@foreach (var image in Model.Images)
{
<img src="@image.Url" class="ArticleMainImage" />
}
</div>
Model.Images.Reverse().Take(3).Reverse();
用于枚举结果-
Model.Images.AsEnumerable().Reverse().Take(3).Reverse()
找到适合的扩展方法-
public static IEnumerable<T> TakeLast<T>(this IEnumerable<T> coll, int N)
{
return coll.Reverse().Take(N).Reverse();
}
来源- https://stackoverflow.com/a/3453282/1982631
以下是LINQ代码,如果集合有超过3个项目,则应该取最后3个项目。它不做任何排序来保持图像的顺序完整。它只是略过了几个第一个条目。
<div>
@foreach (var image in (Model.Images.Count > 3 ? Model.Images.Skip(Model.Images.Count - 3) : Model.Images))
{
<img src="@image.Url" class="ArticleMainImage" />
}
</div>
由于Model.Images
是List<Image>
,您可以简单地访问其Count
属性并索引for
循环中的最后三个元素:
@for (int i = Model.Images.Count - 3; i < Model.Images.Count; i++)
{
<img src="@Model.Images[i].Url" class="ArticleMainImage" />
}
如果图像是一个列表,我认为你可以使用:
List<Image> last3 = im.OrderByDescending(i => i).Take(3).ToList();
您可以使用for子句来代替foreach,以便更好地控制从列表中获取的图像数量
<div>
@{
@for(int i=0; i<= 3; i++)
{
if(i >= Model.Images.Count)
break; //That in case your collection has less than 3 images
var image = Model.Images[Model.Images.Count-i-1];
<img src="@image.Url" class="ArticleMainImage" />
}
}
</div>