ViewBag 检测最后一项 MVC

Gra*_*daS 2 c# asp.net-mvc razor

我在 ViewBag 中有对象列表。有什么方法可以检查该项目是否是 Razor 视图中该 ViewBag 中的最后一个?

@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 */ 
        } 
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:我在那里存储多年作为匿名对象

public object GetYears(){
    return result.Distinct().OrderBy(i => i.startYear).Select(c => new[]
                {
                    c.startYear
                });
}

ViewBag.List = GetYears();
Run Code Online (Sandbox Code Playgroud)

fri*_*ide 5

如果ViewBag.List实现IEnumerable<T>你可以使用Last() 你需要cast在你的列表中ViewBag访问方法IEnumerable或通过索引访问,我认为这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 */ 
        } 
    }
}
Run Code Online (Sandbox Code Playgroud)

或者您可以使用传统方式使用Count和访问元素index

@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 */ 
        } 
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 当然 ViewBag 没有那个方法,但是存储在 viewbag 中的 List 是一个 IEnumerable,并且是一个。可能你需要做一个演员。我进行编辑。 (2认同)