2011-04-07 18 views
6

मुझे MAX लैम्ब्डा अभिव्यक्ति के vb equivilant का उपयोग कर कोई समस्या है। foos.Max (समारोह (एक्स) x.id) पर मैं जब संपत्ति आईडी वी.एस. यह नहीं दिखाएगा IntelliSense का प्रयास करें। लेकिन जब मैं उदाहरण चलाता हूं तो यह काम करता है। क्या मैं ऐसा कुछ कर रहा हूं जो गलत है, मैं बस भाग्यशाली हूं कि यह चलता है?vb lambda MAX function

Sub Main() 
     Dim foos As New List(Of Foo) 
     Dim bob As New Foo() With {.id = 5, .name = "bob"} 
     foos.Add(bob) 
     foos.Max(Function(x) x.id) 
    End Sub 

    Public Class Foo 
     Public Property id() As Integer 
      Get 
       Return m_id 
      End Get 
      Set(ByVal value As Integer) 
       m_id = Value 
      End Set 
     End Property 
     Private m_id As Integer 
     Public Property name() As String 
      Get 
       Return m_name 
      End Get 
      Set(ByVal value As String) 
       m_name = Value 
      End Set 
     End Property 
     Private m_name As String 
    End Class 

उत्तर

7

आप दृश्य स्टूडियो का कौन सा संस्करण उपयोग कर रहे हैं निर्दिष्ट नहीं किया, लेकिन मेरा अनुमान है यह reported to Microsoft कर दिया गया है यह वी.एस. 2008 है के बाद से IntelliSense वी.एस. 2010 इसके अलावा में ठीक से काम करता है, और उन्होंने कहा कि यह होगा विजुअल स्टूडियो के अगले संस्करण में तय किया जाना चाहिए, जो उस रिपोर्ट के समय 2010 होगा।

आपका कोड ठीक काम करता है और संकलित करता है क्योंकि यह सही है, इसलिए आप कुछ भी गलत नहीं कर रहे हैं। आप प्रकार निर्दिष्ट करने की आवश्यकता होगी तुम सच में एक लैम्ब्डा अभिव्यक्ति के लिए वी.एस. 2008 में IntelliSense प्राप्त करना चाहते हैं:

foos.Max(Function(x As Foo) x.id) 

As Foo आप IntelliSense समर्थन मिलना चाहिए जोड़ कर। दोहराने के लिए, समस्या को वीएस 2010 में हल किया गया है।

संबंधित मुद्दे