मैं वर्तमान में LINQ के साथ थोड़ा सा प्रयोग कर रहा हूं। मान लीजिए कि मैं समान अवधि की दो संग्रह करते हैं:LINQ के साथ इंटरलीव विलय?
var first = new string[] { "1", "2", "3" };
var second = new string[] { "a", "b", "c" };
मैं एक में उन दो संग्रह मर्ज करना चाहते हैं, लेकिन एक interleaved फैशन में। जिसके परिणामस्वरूप अनुक्रम इस प्रकार होना चाहिए:
"1", "a", "2", "b", "3", "c"
क्या मैं अब तक लेकर आए हैं Zip
का एक संयोजन, एक गुमनाम प्रकार और SelectMany
है:
var result = first.Zip(second, (f, s) => new { F = f, S = s })
.SelectMany(fs => new string[] { fs.F, fs.S });
किसी को भी एक वैकल्पिक पता है सरल/LINQ के साथ इस तरह के एक interleaved विलय प्राप्त करने के लिए रास्ता?
निश्चित रूप से पुन: प्रयोज्यता और पठनीयता दोनों के संबंध में एक अच्छा समाधान है। – TeaWolf
मुझे लगता है कि पहला संग्रह बड़ा है, तो यह कोड अभी भी उन्हें वापस कर देगा, हालांकि यदि दूसरा संग्रह बड़ा है, तो यह उन्हें छोड़ देगा। हो सकता है कि स्थिरता के लिए थोड़ी देर के बाद दूसरे संग्रह के माध्यम से जारी रखें :-) –
@ डैनी, हाँ। एक बार सबसे कम रन आउट होने पर मेरी प्राथमिकता को रोकना होगा, तो आपको अंतराल को भरने के बारे में चिंता करने की आवश्यकता नहीं है।(आम तौर पर मैं अपने उत्तरों में अन्य लोगों का कोड नहीं डालूंगा, लेकिन मैं अकेले में जिरी के कोड के साथ कैओसपैंडियन का संपादन छोड़ दूंगा।) – Douglas