2009-11-23 14 views
16

VB.NET में के लिए सभी मानों का योग हो रही है, के मैं निम्नलिखित संरचना है मान लें:VB.NET LINQ क्वेरी: एक विशिष्ट संरचना सदस्य

Public Structure Product 
    Public ItemNo As Int32 
    Public Description As String 
    Public Cost As Decimal 
End Structure 

... और उत्पाद की एक सामान्य सूची :

Dim ProductsList As New List(Of Product) 

Dim product1 As New Product 

With product1 
    .ItemNo = 100 
    .Description = "Standard Widget" 
    .Cost = 10D 
End With 

ProductsList.Add(product1) 

Dim product2 As New Product 

With product2 
    .ItemNo = 101 
    .Description = "Standard Cog" 
    .Cost = 10.95D 
End With 

ProductsList.Add(product2) 

Dim product3 As New Product 

With product3 
    .ItemNo = 101 
    .Description = "Industrial Strenght Sprocket" 
    .Cost = 99.95D 
End With 

ProductsList.Add(product3) 

मैं सभी उत्पाद को योग करने के लिए LINQ क्वेरी को कैसे परिभाषित करूं? सूची में मुख्य मूल्य? दूसरे शब्दों में, LINQ मूल्य 120.90 वापस करने के लिए VB.NET में क्वेरी क्या होगी, जो एक एकल LINQ क्वेरी में सभी तीन उत्पाद लागत मानों के योग को दर्शाती है?

उत्तर

33

निर्मित Sum विधि पहले से ही यह करता है।

वीबी में यह इस तरह दिखता है:

ProductList.Sum(Function(item) item.Cost) 

सी # में यह इस तरह दिखता है:

ProductsList.Sum((item) => item.Cost); 
+6

वीबी का दृष्टिकोण: ProductList.Sum (फंक्शन (एक्स) x.Cost) – Nathan

+0

आपके समय और सहायता के लिए मैके, नाथन और ईडिलॉन दोनों के लिए बहुत धन्यवाद। सभी जवाब स्पॉट पर थे और मेरे लिए काम करते थे। आपके उत्तरों को मूल रूप से सी # में मूल्यांकन किए गए डिस्सेम्बल कोड का उपयोग करने की कोशिश करने से पढ़ने, समझने और कार्यान्वित करने के लिए कहीं अधिक आसान था। {:-P यदि आप चाहें तो मैं .NET परावर्तक से डिस्सेप्लर पोस्ट कर सकता हूं। हालांकि दोनों दृष्टिकोण तर्कसंगत और अर्थात् समान हैं, दोनों द्वारा उत्सर्जित कोड के लिए वाक्यविन्यास थोड़ा अलग है और दिलचस्प पढ़ने के लिए बनाता है। फिर से, बहुत धन्यवाद ... – ClockEndGooner

+0

धन्यवाद! मैं यह नहीं समझ सका कि => सी # में था .... वीबी सिंटैक्स अधिक समझ में आईएमओ बनाता है। –

3

एक तरीका यह होगा:

Dim s = (From p As Product In products Select p.Cost).Sum()