Pin*_*nch 5 c# asp.net-mvc razor
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();
Run Code Online (Sandbox Code Playgroud)
在Razor我想做以下事情
@ViewBag.EquipmentList.Count
Run Code Online (Sandbox Code Playgroud)
但是Count总是== 1
我知道我可以在foreach中迭代,但更愿意采用更直接的方法.
也许我在概念上是假的?
@ViewBag.EquipmentListNI.Count()
Run Code Online (Sandbox Code Playgroud)
编辑:好的,现在好像你已经过去Count没有执行:
但是Count总是== 1
听起来你总是拿着一个只有一个条目的列表.如果这是意料之外的,你应该看看为什么你只得到一个条目 - 开始调试代码...这听起来不像是一个剃刀完全没问题.
如果你的价值是真是一List<T>对一些T,我相信它应该罚款.表达式ViewBag.EquipmentList.Count将在每个点动态评估.
换句话说,如果你真的,真的使用显示的赋值代码,它应该没问题.
但是,如果该值仅是一些实施IEnumerable<T>其不公开一个Count属性,那么你需要使用Enumerable.Count()扩展方法-你不能正常使用"扩展方法的语法"与动态类型.一个简单的解决方法是使用:
Enumerable.Count(ViewBag.EquipmentList)
Run Code Online (Sandbox Code Playgroud)
......这仍将使用动态类型的参数来Enumerable.Count,但它不会有找到Count()方法扩展方法.
或者,确保您的价值确实是一个List<T>.如果它实际上是一个数组,您应该能够更改代码以使用该Length属性.
| 归档时间: |
|
| 查看次数: |
5986 次 |
| 最近记录: |