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();
在剃须刀中,我想做以下
@ViewBag.EquipmentList.Count
但计数总是== 1
我知道我可以在foreach中迭代,但宁愿采用更直接的方法。
也许我在概念上脱离了?
编辑:好吧,现在看来您已经过去了Count
没有执行:
但计数总是== 1
听起来您总是在列出一个列表中,恰好是一个条目。如果这是出乎意料的,则应该查看为什么您只需获得一个条目 - 从调试代码开始。..这听起来根本不像剃须刀问题。
如果您的值为确实是 a List<T>
对于某些T
,我相信应该没关系。表达式ViewBag.EquipmentList.Count
将在每个点进行动态评估。
换句话说,如果您真的,真的使用显示的分配代码,应该没关系。
但是,如果值只是不公开 Count
属性的IEnumerable<T>
的某种实现,那么您需要使用Enumerable.Count()
扩展方法 - 并且您无法使用正常带有动态键入的"扩展方法语法"。一个简单的修复是使用:
Enumerable.Count(ViewBag.EquipmentList)
...仍将使用动态键入参数对Enumerable.Count
,但不必找到Count()
方法作为扩展方法。
另外,请确保您的值确实是List<T>
。如果实际上是一个数组,则应该能够更改代码以使用Length
属性。
@ViewBag.EquipmentListNI.Count()