【发布时间】:2015-06-09 12:34:15
【问题描述】:
我在我的视图中帮助过滤了一个 Foreach 循环,我想我会使用这个推理现在使用相同的逻辑过滤一个字段。我需要这个字段来显示最后一个具有 PublicFlag == true 的 TicketNoteDate。代码可以编译,但是当我尝试运行它时它会崩溃。这是我尝试过的代码:
@Html.DisplayFor(modelItem => item.TicketNotes.OrderBy(t => t.TicketNoteDate).Where(t => t.PublicFlag == true).Last().TicketNoteDate)
这是我收到的错误:
“System.InvalidOperationException”类型的异常发生在 System.Core.dll 但未在用户代码中处理
如果我删除此代码:
.Where(t => t.PublicFlag == true)
然后它当然可以过滤掉非公开笔记。
【问题讨论】:
-
会不会没有PublicFlag== true的项?
-
过滤后可能记录数为0所以会报错
-
不相关,但您应该将
.Where()放在Orderby()之前 - 效率更高。 -
.Where(t => t.PublicFlag == false) 会发生什么?
-
Karl Kieninger 这是因为有时一张票不会像另一个人建议的那样有任何公共注释。这本身就是我为将来的所有票证修复的错误,但我从未修复过我作为测试创建的旧票证。
标签: c# asp.net-mvc linq view