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
但是Count总是== 1
我知道我可以在foreach中进行迭代,但更愿意采用更直接的方法。
也许我在概念上是关闭的?
答案 0 :(得分:5)
@ViewBag.EquipmentListNI.Count()
答案 1 :(得分:5)
编辑:好的,现在好像你已经过了Count
没有执行:
但是Count总是== 1
听起来你总是拿着一个只有一个条目的列表。如果这是意料之外的,你应该看看为什么你只得到一个条目 - 从调试到代码开始。 ..这听起来不像剃刀问题。
如果某些List<T>
的值真的 T
,我认为应该没问题。表达式ViewBag.EquipmentList.Count
将在每个点动态评估。
换句话说,如果你真的,真的使用显示的分配代码,它应该没问题。
但是,如果值只是没有公开IEnumerable<T>
属性的Count
的某些实现,那么您需要使用{{1扩展方法 - 并且您不能使用动态类型的常规“扩展方法语法”。一个简单的解决方法是使用:
Enumerable.Count()
...仍会使用动态类型参数到Enumerable.Count(ViewBag.EquipmentList)
,但它不必将Enumerable.Count
方法作为扩展方法。< / p>
或者,确保您的值确实是Count()
。如果它实际上是一个数组,您应该能够更改代码以使用List<T>
属性。