Trim leading zeroes from second component of a string
The biggest thing I can see, which may or may not be an issue, is the manner in which you process the strings.


    if (code.Contains('.'))
    {
        var prefix = code.Split('.')[0];
        var subCode = code.Split('.')[1].TrimStart('0');
        codes.Add(prefix + '.' + subCode);
    }
    else
    {
        codes.Add(code);
    }



This could be rewritten as:

var codeSections = code.Split('.');
var code = codeSections[0];

if (codeSections.Length == 2)
    code += "." + codeSections[1].TrimStart('0');

codes.Add(code);


This saves you LoC, and probably makes it faster. (You could also possible make this a StringBuilder as well.) And in my opinion, this is more readable/concise/descriptive.

Another alternative:

code = code.Replace(".0", ".");


Both should have the same effect on the cases you provided.

However, if, for whatever reason, one of the cases ends up as 46.00, then the second method will only make it 46.0. Choose that method with great caution.

As the OP pointed out in an edit that should have been a comment, this code can all be done as LINQ:

var codes = codesWithSubCodes.ConvertAll(code =&gt; code.Replace(".0", "."));