using System.Collections.Generic;
public static class StringExtensions
public static IEnumerable<T> Split<T>(this string input, string[] separator, int count, StringSplitOptions options)
if (string.IsNullOrWhiteSpace(input))
result = Enumerable.Empty<T>();
string[] items = input.Split(separator, count, options);
var list = new T[items.Length];
for(int i = 0; i < items.Length; i++)
if (Convert.ChangeType(items[i], typeof(T)) is T output)
result = list.Where(i => i != null);
public static void Main()
string input = "1,2,3,4";
foreach(decimal output in input.Split<int>(new string[] {","}, int.MaxValue, StringSplitOptions.None))
Console.WriteLine(output);