从Viewbag.List中查找项目

时间:2015-03-12 07:32:26

标签: c# asp.net-mvc linq

我的控制器代码如下

ViewBag.Districts = (from a in _dbContext.DISTRICTS 
                     select new ComboItem { 
                                            ID = a.DISTRICT_ID, 
                                            Name = a.DISTRICT_NAME 
                                          }
                     ).ToList();

My Razor查看代码如下

@foreach (var dist in ViewBag.Districts)
{
    if (item.DISTRICT_ID == dist.ID)
    {
        @dist.Name
    }
}

有没有办法在ViewBag.Districts中查找项目,例如ViewBag.Districts.where(m=>m.ID==item.DISTRICT_ID. 或linq表达式,以便我可以避免循环。 任何人都非常感谢我。

1 个答案:

答案 0 :(得分:2)

Viewbag是动态的,因此编译器无法识别其实际类型,因此您需要使用这样的显式类型转换来使用Enumerable方法: -

((IEnumerable<ComboItem>)ViewBag.Districts).Where(x => x.ID == item.DISTRICT_ID);

我假设您要在View中使用此功能,而且您发布的foreach循环无法在没有明确投射的情况下工作: -

@foreach (var dist in (IEnumerable<ComboItem>)ViewBag.Districts)
{
    if (item.DISTRICT_ID == dist.ID)
    {
        @dist.Name
    }
}