标签: c# asp.net asp.net-mvc linq razor
我的模型有ICollection个电话号码。在我看来,我想显示标记为Primary的记录的值。
ICollection
@Html.DisplayFor(model => model.Telephones.Where(a=>a.Primary==true).Number)
Linq语法中不允许.Number。如何使上述线路工作或者更确切地说显示数字的正确方法是什么?
.Number
我可能应该在控制器中执行逻辑并将值放在视图模型中,但看起来这应该是可行的。
答案 0 :(得分:3)
Where扩展方法返回IEnumerable<T>。如果您只想要满足条件的第一项,请使用First:
Where
IEnumerable<T>
First
@Html.DisplayFor(model => model.Telephones.First(a => a.Primary).Number)
如果您还需要确保集合中的恰好一个项目满足条件(否则抛出异常),请考虑使用Single:
Single
@Html.DisplayFor(model => model.Telephones.Single(a => a.Primary).Number)