我使用此代码过滤列表中的项目。
@foreach (var wu in ViewBag.GetWorkUser.Where(op => op.action == 0))
{@wu.DisplayName}
代码:linq / Razor
但我收到此错误
不能将lambda表达式用作动态参数 调度操作,而不先将其转发给委托或 表达式树类型
我不明白这里有什么问题。我有搜索并尝试其他一些代码来解决这个问题 但仍然是同样的错误。
有人可以帮我这个忙吗?答案 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>
}