संपादित करें - बार-बार दोहराना दोनों संग्रहों में एक ही सूचकांक में स्थिति जबकि
आवश्यकता एक 'सिंक्रनाइज़' फैशन में दोनों संग्रह के माध्यम से यानी स्थानांतरित करने के लिए, उपयोग करने के लिए है, तो दूसरे संग्रह के पहले तत्व के साथ पहले संग्रह का पहला तत्व, फिर दूसरा 2, और इसी तरह, किसी भी दुष्प्रभाव कोड को करने की आवश्यकता के बिना, @sll's answer देखें और उसी सूचकांक में तत्वों के जोड़े को प्रोजेक्ट करने के लिए .Zip()
का उपयोग करें, जब तक संग्रह में से एक तत्व तत्वों से बाहर नहीं चला जाता है।
अधिक आम तौर पर
foreach
के बजाय
, आप IEnumerator
दोनों संग्रहों की IEnumerable
से GetEnumerator()
पद्धति का उपयोग करके उपयोग कर सकते हैं और उसके बाद संग्रह पर MoveNext()
फोन जब आप में अगले तत्व पर जाने के लिए की जरूरत है वह संग्रह धाराओं को मूर्त रूप देने के बिना, दो या अधिक आदेशित धाराओं को संसाधित करते समय यह तकनीक आम है।
var stream1Enumerator = stream1.GetEnumerator();
var stream2Enumerator = stream2.GetEnumerator();
// i.e. Until stream1Enumerator runs out of
while (stream1Enumerator.MoveNext())
{
// Now you can iterate the collections independently
if (moon == 'Blue')
{
stream2Enumerator.MoveNext();
}
// Do something with stream1Enumerator.Current and stream2Enumerator.Current
}
के रूप में अन्य लोगों, ने बताया है यदि संग्रह materialized कर रहे हैं और समर्थन अनुक्रमण, इस तरह के एक ICollection
इंटरफेस के रूप में, आप भी सबस्क्रिप्ट []
ऑपरेटर का उपयोग कर सकते हैं, हालांकि यह नहीं बल्कि अनाड़ी लगता है आजकल:
var smallestUpperBound = Math.Min(collection1.Count, collection2.Count);
for (var index = 0; index < smallestUpperBound; index++)
{
// Do something with collection1[index] and collection2[index]
}
अंत में, overload of Linq's .Select()
भी है जो लौटा तत्व का सूचकांक प्रदान करता है, जो भी उपयोगी हो सकता है।
उदा। नीचे दिए गए वैकल्पिक रूप से collection2
के पहले दो तत्वों के साथ collection1
के सभी तत्वों जोड़ी देगा:
var alternatePairs = collection1.Select(
(item1, index1) => new
{
Item1 = item1,
Item2 = collection2[index1 % 2]
});
के बारे में क्या पहली foreach के अंदर दूसरी सूची के लिए एक foreach है? –
डुप्: http: //stackoverflow.com/questions/5630758/how-to-loop-through-two-lists- इसके साथ-साथ – Jonathan
@ जोनाथन - वीबी.नेट सी # नहीं है - डुप्लिकेट नहीं है। – Oded