我的控制器代码如下
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表达式,以便我可以避免循环。
任何人都非常感谢我。
答案 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
}
}