2010-03-24 15 views
5

मुझे पता है कि मेरे पास एक ही मूल्य के साथ आईडी नहीं होना चाहिए। यह सिर्फ कल्पित है, इसलिए इसे अनदेखा करें।लैम्बडा अभिव्यक्ति का उपयोग करके ऑब्जेक्ट्स की सूची कैसे फ़िल्टर कर सकता हूं?

मेरे पास है:

 
-- Id: 1, Name: Honda 
-- Id: 1, Name: Nissan 

समस्या अधिक छानने है:

List<Car> carList = new List<Car>(); 
carList.Add(new Car() { id = 1, name = "Honda" }); 
carList.Add(new Car() { id = 2, name = "Toyota" }); 
carList.Add(new Car() { id = 1, name = "Nissan" }); 

मैं लैम्ब्डा अभिव्यक्ति का उपयोग करने की 1.

पूर्वानुमानित परिणाम एक आईडी है कि सभी कारों प्राप्त करना चाहते हैं एक विदेशी कुंजी के आधार पर एक वस्तु सूची।

IEnumerable<Car> matchingCars = carList.Where(car => car.id == 1); 

List<T>.FindAll का उपयोग करना::

उत्तर

15

उपयोग LINQ का प्रयास करें

List<Car> matchingCars = carList.FindAll(car => car.id == 1); 

मैं व्यक्तिगत रूप से LINQ दृष्टिकोण पसंद करेंगे -, ध्यान दें कि कि आलसी है जबकि FindAll तुरंत पूरी सूची देखता है और टी के साथ एक नई सूची बनाता है वह परिणाम।

+0

मैं LINQ वरीयता से सहमत नहीं हूं, आपको सबसे पहले आलसी शुरू करने के लिए गीलेर तय करने से पहले कोड के संदर्भ को जानने की आवश्यकता है .... –

+0

@Tim: मैं आमतौर पर LINQ का उपयोग ' ToList 'कॉल बाद में अगर मैं उत्सुक मूल्यांकन चाहता था, बस एक स्थिरता के लिए। कुछ मामलों में FindAll थोड़ा सा सरल हो सकता है, हालांकि यह आपको केवल 'IEnumerale ' की आवश्यकता के बजाय स्रोत के रूप में 'सूची ' रखने के लिए सीमित करता है। –

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

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