2014-06-18 101 views
0

我使用此代码来过滤列表中的项目。@foreach loop - linq/razor

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

代码:LINQ /剃刀

,但我收到这个错误

不能使用lambda表达式作为参数传递给一个动态 分派操作,而不首先将其浇铸到一个委托或 表达树型

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

有人可以给我这个请愿书吗?

+0

您应该将viewbag转换为您的模型类型 –

+0

尝试将ViewBag.GetWorkUser投射到列表 –

回答

4

ViewBag动态集合。所以op(λ变量)的类型没有在编译时已知,则需要使用Where这样的前投ViewBag.GetWorkUser

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

+1,比我快:) –

+0

伟大的解决方案和解释。它的工作,现在我明白我的代码有什么问题。非常感谢你+1 – user2232273

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

工作。 +1 thx – user2232273

1

的正确方式sothing这样的:

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