2012-10-22 12 views
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(); 

उस्तरा में मैं निम्नलिखितगणना

@ViewBag.EquipmentList.Count 

लेकिन गणना करना चाहते हैं हमेशा == 1

है मैं जानता हूँ कि मैं एक foreach में पुनरावृति कर सकते हैं लेकिन बल्कि एक और प्रत्यक्ष दृष्टिकोण होगा।

शायद मैं अवधारणा से दूर हूं?

उत्तर

5

संपादित करें: ठीक है, तो अब ऐसा लगता है कि आप अतीत Count नहीं क्रियान्वित मिल गया है की तरह:

लेकिन गणना हमेशा == 1

है ध्वनि आप हमेशा रहे हैं की तरह वास्तव में एक प्रविष्टि के साथ एक सूची प्राप्त करना। यदि यह अप्रत्याशित है, तो आपको क्यों देखना चाहिए आपको केवल एक ही प्रविष्टि मिल रही है - कोड में डिबगिंग के साथ शुरू करें ... यह बिल्कुल रेजर समस्या की तरह नहीं लगता है।


यदि आपका मूल्य कुछ T के लिए वास्तव में एक List<T>थे, मेरा मानना ​​है कि यह ठीक होना चाहिए। अभिव्यक्ति ViewBag.EquipmentList.Count प्रत्येक बिंदु पर गतिशील रूप से मूल्यांकन करेगी।

दूसरे शब्दों में, यदि आप वास्तव में, वास्तव में दिखाए गए असाइनमेंट कोड का उपयोग कर रहे हैं, तो यह ठीक होना चाहिए। और आप सामान्य "विस्तार विधि वाक्य विन्यास का उपयोग नहीं कर सकते हैं -

अगर, हालांकि, मूल्य सिर्फ IEnumerable<T> के कुछ कार्यान्वयन जो एक Count संपत्ति का खुलासा नहीं करता है, तो आप Enumerable.Count() विस्तार पद्धति का उपयोग करना होता है "गतिशील टाइपिंग के साथ। एक साधारण ठीक उपयोग करने के लिए होगा:

Enumerable.Count(ViewBag.EquipmentList) 

... जो अभी भी Enumerable.Count को तर्क के लिए गतिशील लेखन का उपयोग होगा, लेकिन यह एक विस्तार पद्धति के रूप में Count() विधि को खोजने के लिए नहीं होगा।

वैकल्पिक रूप से, सुनिश्चित करें कि आपका मान वास्तव में List<T> है। यदि यह वास्तव में एक सरणी है, तो आप इसके बजाय Length संपत्ति का उपयोग करने के लिए कोड को बदलने में सक्षम होना चाहिए।

+0

टाइपो पर अच्छी आंख, लेकिन फिर भी वही त्रुटि, टाइपो केवल मेरी पोस्ट – Pinch

+0

@ पिनच पर मौजूद है: आपकी पोस्ट में कुछ भी * बाकी * था? क्या आप वास्तव में * कॉल करने के लिए कॉल कर रहे हैं? –

+0

:) हाँ .. अब यह ठीक है ... मैंने अभी देखा @ ViewBag.EquipmentList.Count काम करता है लेकिन हमेशा = 1 – Pinch

5
@ViewBag.EquipmentListNI.Count() 
+0

क्षमा करें, लेकिन गणना 'विधि का उपयोग नहीं किया जा सकता है। – Pinch

+2

@ पिनच: यदि आप लिंक एक्सटेंशन विधि का उपयोग कर रहे हैं तो यह हो सकता है। –

+0

+1 बहुत बहुत धन्यवाद! – Pinch