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

しかし、Count は常に == 1 です

私は foreach で反復できることを知っていますが、より直接的なアプローチを望んでいます。

おそらく私は概念的にオフですか?

4

2 に答える 2

7

Count編集:さて、実行しないことを過ぎたようです:

しかし、Count は常に == 1 です

常に 1 つのエントリを含むリストを取得しているようです。これが予想外の場合は、エントリが 1 つしかない理由を確認する必要があります。コードのデバッグから始めてください。これは Razor のようには聞こえません。まったく問題。


あなたの価値が本当にある人List<T>にとってはT、それでいいと思います。式ViewBag.EquipmentList.Countはすべてのポイントで動的に評価されます。

つまり、示されている割り当てコードを実際に使用している場合は、問題ありません。

ただし、値がプロパティを公開しないIEnumerable<T>実装である場合は、拡張メソッドを使用する必要があります。また、動的型付けで通常の「拡張メソッド構文」を使用することはできません。簡単な修正の 1 つは、次を使用することです。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 に答える