【问题标题】:Filter Field in List by boolean value in MVC通过MVC中的布尔值过滤列表中的字段
【发布时间】: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


【解决方案1】:
@Html.DisplayFor(modelItem => item.TicketNotes.Where(t => t.PublicFlag == true).OrderByDescending(t => t.TicketNoteDate).First().TicketNoteDate)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-11
    • 1970-01-01
    • 1970-01-01
    • 2013-12-19
    • 1970-01-01
    • 1970-01-01
    • 2021-08-19
    • 1970-01-01
    相关资源
    最近更新 更多