如何从我的图片列表中获取最后3项?我正在使用foreach
循环,因此我可以获取单个图像并访问其属性,例如img标记的Url
。
这是我的代码:
<div>
@foreach (var image in Model.Images)
{
<img src="@image.Url" class="ArticleMainImage" />
}
</div>
答案 0 :(得分:5)
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();
}
答案 1 :(得分:3)
由于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" />
}
答案 2 :(得分:3)
如果集合有超过3个项目,那么LINQ代码应该占用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>
答案 3 :(得分:1)
如果图片是List,我想你可以使用:
List<Image> last3 = im.OrderByDescending(i => i).Take(3).ToList();
答案 4 :(得分:-1)
您可以使用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>