String.comparison performance (con recorte)

Necesito hacer un montón de comparaciones de cadenas de alto rendimiento que no distinguen entre mayúsculas y minúsculas y me di cuenta de que mi forma de hacerlo era .ToLower (). Trim () era realmente estúpido debido a que se asignaban todas las nuevas cadenas

Así que cavé un poco alrededor y de esta manera parece preferible:

String.Compare(txt1,txt2, StringComparison.OrdinalIgnoreCase)

El único problema aquí es que quiero ignorar los espacios iniciales o finales, es decir, Recortar (), pero si uso Recortar, tengo el mismo problema con las asignaciones de cadenas. Supongo que podría comprobar cada cadena y ver si comienza con ("") o EndsWith ("") y solo luego recortar. O eso o averiguar el índice, la longitud de cada cadena y pasar a cadena.

public static int Compare
(
    string strA,
    int indexA,
    string strB,
    int indexB,
    int length,
    StringComparison comparisonType
) 

pero eso parece bastante desordenado y probablemente tenga que usar algunos enteros si no hago una declaración muy grande en caso de que no sea posible para cada combinación de espacios en blanco al final y al final en ambas cadenas ... ¿alguna idea de una solución elegante?

Aquí está mi propuesta actual:

public bool IsEqual(string a, string b)
    {
        return (string.Compare(a, b, StringComparison.OrdinalIgnoreCase) == 0);
    }

    public bool IsTrimEqual(string a, string b)
    {
        if (Math.Abs(a.Length- b.Length) > 2 ) // if length differs by more than 2, cant be equal
        {
            return  false;
        }
        else if (IsEqual(a,b))
        {
            return true;
        }
        else 
        {
            return (string.Compare(a.Trim(), b.Trim(), StringComparison.OrdinalIgnoreCase) == 0);
        }
    }

Respuestas a la pregunta(8)

Su respuesta a la pregunta