using System; using System.Globalization; using System.Linq; using System.Collections.Generic; public class Test { public static void Main() { var input = "dbo.xyx.v1.UserDefinedFunction"; string[] tokens = input.Split('.'); int midIndex = (tokens.Length - 1) / 2; IEnumerable intermediateIndices = midIndex % 2 == 0 ? new[] { midIndex } : new[] { midIndex, midIndex + 1 }; string intermediate = string.Join(".", tokens.Where((t, i) => intermediateIndices.Contains(i)).ToArray()); Console.Write(intermediate); } }