Intersperse implementation in C#
By Tan Lee Published on Nov 09, 2024 369
In this post, I'll demonstrate how to implement an Intersperse method in C# as an extension method on the IEnumerable<T> interface.
I used `yield` to minimize unnecessary iterations over the collection, reducing overhead. While I could have used a method like `Zip`, it would have introduced more complexity, requiring additional manipulation of the sequence. The `yield`-based approach is simpler and more efficient for this task.
public static class EnumerableExtensions { public static IEnumerable<T> Intersperse<T>(this IEnumerable<T>? source, T delimiter) { if (source is null) yield break; using var enumerator = source.GetEnumerator(); var hasFirstElement = enumerator.MoveNext(); if (hasFirstElement == false) yield break; yield return enumerator.Current; while (enumerator.MoveNext()) { yield return delimiter; yield return enumerator.Current; } } }
Usage
var text = new string("FoxLearn".Intersperse('-').ToArray()); // F-o-x-L-e-a-r-n var number = new string("100".Intersperse('x').ToArray()); // 1x0x0 var array = new[] { 1, 2, 3 }.Intersperse(10).ToArray(); // 1, 10, 2, 10, 3 var menus = new[] { "Home", "About", "Privacy" } // Home > About > Privacy .Intersperse(" > ") .Aggregate((a, b) => $"{a}{b}");
Categories
Popular Posts
Structured Data using FoxLearn.JsonLd
Jun 20, 2025
Implement security headers for an ASP.NET Core
Jun 24, 2025
What Are RESTful Web Services?
Feb 19, 2024
Plus Admin Dashboard Template
Nov 18, 2024