Cómo comparar la cadena con la enumeración en C #

string strName = "John";
public enum Name { John,Peter }

private void DoSomething(string myname)
{
case1:
     if(myname.Equals(Name.John) //returns false
     {

     }

case2:
     if(myname == Name.John) //compilation error
     {

     }

case3:
     if(myname.Equals(Name.John.ToString()) //returns true (correct comparision)
     {

     }
}

cuando uso.Equals Es referencia de comparación y cuando uso== significa valor de comparación.

¿Hay un código mejor en lugar de convertir el valor de enumeración aToString() ¿para comparacion? porque destruye el propósito de la clase de valor enum y también,ToString() en la enumeración está en desuso?

Respuestas a la pregunta(4)

Su respuesta a la pregunta