System.Collections.Generic.List的计数

时间:2012-10-22 16:26:52

标签: 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();

在Razor中我想做以下

@ViewBag.EquipmentList.Count

但是Count总是== 1

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

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

2 个答案:

答案 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>属性。