मेरे पास सूचियों की एक सूची है जो मैं इस तरह के लिए चौराहा खोजना चाहता हूं:
var list1 = new List<int>() { 1, 2, 3 };
var list2 = new List<int>() { 2, 3, 4 };
var list3 = new List<int>() { 3, 4, 5 };
var listOfLists = new List<List<int>>() { list1, list2, list3 };
// expected intersection is List<int>() { 3 };
क्या IEnumerable.Intersect () के साथ ऐसा करने का कोई तरीका है?
संपादित करें: मुझे इस पर अधिक स्पष्ट होना चाहिए: मेरे पास वास्तव में सूचियों की एक सूची है, मुझे नहीं पता कि कितने होंगे, उपरोक्त तीन सूचियां सिर्फ एक उदाहरण थीं, मेरे पास वास्तव में क्या है IEnumerable<IEnumerable<SomeClass>>
उपाय
सभी महान उत्तरों के लिए धन्यवाद। यह पता चला कि इसे हल करने के लिए चार विकल्प थे: सूची + समुच्चय (@Marcel Gosselin), सूची + foreach (@JaredPar, @Gabe Moothart), HashSet + समुच्चय (@jjperll) और HashSet + foreach (@Tony the Pony)। मैंने इन समाधानों (कुछ सूचियों की संख्या , प्रत्येक सूची में तत्वों की संख्या और यादृच्छिक संख्या अधिकतम आकार) पर कुछ प्रदर्शन परीक्षण किया ।
यह पता चला है कि अधिकांश स्थितियों के लिए हैशसेट सूची से बेहतर प्रदर्शन करता है (बड़ी सूचियों और छोटे यादृच्छिक संख्या आकार को छोड़कर, हशसेट की प्रकृति के कारण मुझे लगता है।) मुझे फॉर्च विधि और कुल के बीच कोई वास्तविक अंतर नहीं मिला। विधि (foreach विधि थोड़ा बेहतर प्रदर्शन करती है।)
मेरे लिए, समग्र विधि वास्तव में आकर्षक है (और मैं स्वीकृत उत्तर के रूप में उस के साथ जा रहा हूं) लेकिन मैं यह नहीं कहूंगा कि यह सबसे पठनीय समाधान है .. फिर से धन्यवाद!