5
ViewBag.EquipmentList = myInventoryEntities.p_Configurable_Equipment_Request_Select(Address_ID, false).Select(c => new { Value = c.Quantity + " " + c.Device_Name + " (s)", ID = c.Device_ID.ToString() }).ToList();

在 Razor 我想做以下

@ViewBag.EquipmentList.Count

但计数总是 == 1

我知道我可以在 foreach 中进行迭代,但宁愿采用更直接的方法。

也许我在概念上是关闭的?

4

2 回答 2

7

编辑:好的,所以现在看来​​你已经过去Count不执行了:

但计数总是 == 1

听起来你总是在获取一个只有一个条目的列表。如果这是出乎意料的,你应该看看为什么你只得到一个条目 - 从调试代码开始......这听起来不像 Razor根本问题。


如果你的价值真的是 a List<T>for some T,我相信它应该没问题。该表达式ViewBag.EquipmentList.Count将在每一点动态评估。

换句话说,如果你真的,真的使用显示的分配代码,那应该没问题。

但是,如果该值只是一些公开属性的实现IEnumerable<T>,那么您需要使用扩展方法 - 并且您不能使用带有动态类型的普通“扩展方法语法”。一个简单的解决方法是使用:CountEnumerable.Count()

Enumerable.Count(ViewBag.EquipmentList)

...它仍将使用动态类型作为 的参数Enumerable.Count但它不必将Count()方法作为扩展方法查找。

或者,确保您的值确实是List<T>. 如果它实际上是一个数组,您应该能够更改代码以使用该Length属性。

于 2012-10-22T16:35:01.443 回答
5
@ViewBag.EquipmentListNI.Count()
于 2012-10-22T16:28:54.130 回答