C# ViewBag检测最后一项MVC
我有ViewBag中的对象列表。有没有办法检查该项目是否是Razor视图中该视图包中的最后一个项目C# ViewBag检测最后一项MVC,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我有ViewBag中的对象列表。有没有办法检查该项目是否是Razor视图中该视图包中的最后一个项目 @if (ViewBag.List != null) { foreach(var item in ViewBag.List) { if(item[0] == **LAST ITEM** ) // here I want to check if it is the last item in my ViewBag.List {
@if (ViewBag.List != null)
{
foreach(var item in ViewBag.List)
{
if(item[0] == **LAST ITEM** ) // here I want to check if it is the last item in my ViewBag.List
{
/* do stuff */
}
}
}
编辑:我将这些年作为匿名对象存储
public object GetYears(){
return result.Distinct().OrderBy(i => i.startYear).Select(c => new[]
{
c.startYear
});
}
ViewBag.List = GetYears();
如果
ViewBag.List
实现IEnumerable
您可以使用Last()
为了访问IEnumerable
的方法或通过索引访问,您需要cast
视图包中的列表,我假设startYear
是int
@if (ViewBag.List != null)
{
var last_item = (ViewBag.List as IEnumerable<int[]>).Last();
foreach(var item in ViewBag.List)
{
if(item[0] == last_item[0]) // here I want to check if it is the last item in my ViewBag.List
{
/* do stuff */
}
}
}
您在ViewBag中选择了什么。列表显示该代码。该
ViewBag.List
是什么类型的<代码>列表,数组
…ViewBag没有Count()或Last()之类的函数,我已经尝试过了:)当然ViewBag没有那种方法,但是ViewBag中存储的列表是IEnumerable,并且是可数的。也许你需要做一个演员。我做了一个编辑。我用不同的方法更新了答案,并用viewbag列表的转换更新了答案。它应该可以工作,如果不可以,请告诉我。谢谢,现在这正在使用铸造,唯一的问题是,该项目不等于最后一个项目,所以我可以将其更新为项目[0]==最后一个项目[0]。非常有用的答案!:)哦对不起,我认为你在评论中所说的只是一个例子。尝试以下操作:var lastFiltered=(ViewBag.List作为IEnumerable)。其中(m=>m[0]<2015)。Last()代码>
@if (ViewBag.List != null)
{
IEnumerable<int[]> viewbag_list = (ViewBag.List as IEnumerable<int[]>);
var last_item = viewbag_list[viewbag_list.Count()-1];
foreach(var item in ViewBag.List)
{
if(item[0] == last_item[0]) // here I want to check if it is the last item in my ViewBag.List
{
/* do stuff */
}
}
}