2010-11-16 10 views
14

मेरे पास एक सूची (माईटाइप) है और मैं सूची का सबसेट प्राप्त करने के लिए LINQ का उपयोग करना चाहता हूं।का उपयोग कैसे करें। सामान्य सूची में जहां

माईटाइप पर खाता नाम नामक एक फ़ील्ड है। क्या मैं इस तरह की चीज कहने के लिए LINQ का उपयोग कर सकता हूं?

Dim t As List(Of MyType) 
t = GetMyTypes() 
t = t.Where(AccountNumber = "123") 

धन्यवाद

उत्तर

30

आप बहुत करीब हैं। तो अपने कोड इस तरह दिखना चाहिए Where जरूरतों का तर्क, एक समारोह होने के लिए: वैकल्पिक रूप से

Dim t As List(Of MyType) 
t = GetMyTypes() 
Dim result = t.Where(Function(x) x.AccountNumber = "123") 

आप वर्बोज़ LINQ सिंटैक्स का उपयोग कर सकते हैं:

Dim result = From t In GetMyTypes() Where t.AccountNumber = "123" 

दिए गए डेटा प्रकार नहीं है List(Of MyType) लेकिन IEnumerable(Of MyType), इसलिए आप इसे List(Of MyType) के रूप में घोषित एक चर के लिए सीधे निर्दिष्ट नहीं कर सकते हैं। यदि आप एक सूची बनाना चाहते हैं, तो आप result.ToList() का उपयोग कर इसे "रूपांतरित" कर सकते हैं। इससे list to be evaluated immediately भी हो सकता है।

+0

सुनिश्चित नहीं है कि इसमें यह जोड़ना ठीक है ... कोई जोड़ नहीं होगा। कहीं भी।() इसे थोड़ा बेहतर बनाते हैं? – Feign

+2

@ फ़िग्न: यह वास्तव में इस बात पर निर्भर करता है कि आप क्या हासिल करना चाहते हैं: यदि आप खाता संख्या '123' के साथ ** पहले ** प्रविष्टि चाहते हैं, तो 'प्रथम' का उपयोग करें (उस मामले में 'ऑर्डर बाय' क्लॉज जोड़ना उपयोगी हो सकता है, हालांकि)। यदि आप चाहते हैं ** खाता संख्या '123' के साथ सभी ** प्रविष्टियों की एक सूची, 'ToList' का उपयोग करें। – Heinzi

+1

धन्यवाद! मुझे नहीं पता था कि आप इसका उपयोग करते हैं। जहां() इस तरह से। – Feign

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