@foreach循环 - linq / razor

时间:2014-06-18 11:41:51

标签: c# asp.net-mvc linq razor

我使用此代码过滤列表中的项目。

@foreach (var wu in ViewBag.GetWorkUser.Where(op => op.action == 0))
        {@wu.DisplayName}

代码:linq / Razor

但我收到此错误

  

不能将lambda表达式用作动态参数   调度操作,而不先将其转发给委托或   表达式树类型

我不明白这里有什么问题。我有搜索并尝试其他一些代码来解决这个问题 但仍然是同样的错误。

有人可以帮我这个忙吗?

3 个答案:

答案 0 :(得分:4)

ViewBag动态集合。因此,op(lambda变量)的类型在编译时是未知的,您需要在使用ViewBag.GetWorkUser之前强制转换Where

((IEnumerable<User>)ViewBag.GetWorkUser).Where(op => op.action == 0))
        //    ^^^ User or whatever type you have

答案 1 :(得分:1)

@foreach (var wu in ((IEnumerable<User>)ViewBag.GetWorkUser).Where(op => op.action == 0))
{
    wu.DisplayName
}

答案 2 :(得分:1)

正确的方式是这样的:

@foreach (var wu in ((List<GetWorkUser>)ViewBag.GetWorkUser).Where(op => op.action == 0)){
    <span> @wu.DisplayName </span>
}