using System.Collections.Generic;
public static void Main()
var list = new List<string>{"2.1-hello","2.2-world","2.3-people","2.10-everywhere", "foo"};
.Select(s => (String:s,Version:GetVersion(s), LastPart:GetLastPart(s)))
Console.WriteLine(string.Join(Environment.NewLine, list));
private static Version GetVersion(string s, string delimiter = "-")
int index = s.IndexOf(delimiter);
if(index == -1) return null;
return Version.TryParse(s.Remove(index), out Version v) ? v : null;
private static string GetLastPart(string s, string delimiter = "-")
int index = s.IndexOf(delimiter);
if (index == -1) return s;
return s.Substring(index + delimiter.Length);