使用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>

使用foreach循环获取列表中的最后3个项目

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.ImagesList<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>