2011-09-16 13 views
5
public class Test 
{ 
    int i; 
    string s; 
} 

List<Test> testList = new List<Test>(); //assume there are some values in it. 

List<int> intList = new List<int>(){ 1,2,3}; 

मैं कैसे कहूं items from testList where i is in intList ऑब्जेक्ट्स के लिए linq का उपयोग कर।अन्य सूची के आधार पर एक सूची से चयन करने के लिए linq क्वेरी

कुछ List<Test> testIntList = testList.Where(t=>t.i in intList) तरह

उत्तर

7

तकनीकी तौर पर, यह होगा:

List<Test> testIntList = testList.Where(t => intList.Contains(t.i)).ToList(); 

हालांकि, कि धीमी गति से हो सकता है अगर intList बड़ी है, के बाद से List<T>.Contains हे (एन) में अपनी खोज करता है। एक तेजी से दृष्टिकोण का उपयोग किया जाएगा एक HashSet<T>:

HashSet<int> intList = new HashSet<int>(){ 1,2,3 }; 
2

यह भी दिलचस्प हो सकता है और अच्छे प्रदर्शन की उम्मीद:

List<test> finalList = testList.Join(intList, 
            test => test.id, 
            i => i, 
            (t, i) => t).ToList(); 

तुम्हें पता है जब आप एक एसक्यूएल SELECT में तालिकाओं में शामिल होने? यह ऑब्जेक्ट्स के लिए लिंक का उपयोग करके ऐसा करने का तरीका है।

+0

मुझे यकीन नहीं है कि मैं यह अधिकार समझ गया हूं। यह कैसे पता चलता है कि मैं => मैं इस विशेष प्रश्न में हूं। यह कहीं भी परिभाषित नहीं है। –

+0

@ एलेक्स जे - अभिव्यक्ति 'i => i' एक लैम्ब्डा अभिव्यक्ति है जो कि इसकी अपनी परिभाषा है। इस क्वेरी में यह कहता है कि शामिल 'intistist' से मानों का उपयोग करता है। – Enigmativity

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