Wenn man mit Enumerations arbeitet, ist es immer ganz praktisch, wenn man weiß, wie die DefaultValues funktionieren bzw. wie man diese beeinflusst. Grundsätzlich ist es eigentlich ganz einfach:
Wenn man nichts weiter angibt, ist der erste Wert im Enum der Default-Wert. Wenn man den Enums Integerwerte zuweist, ist der Eintrag mit dem Wert 0 der Default-Eintrag.

Beispiel:

public enum Operators
{
	Equal,
	GreaterThan,
	LowerThan
}

Hier ist nichts näher angegeben, also wird der erste Wert als Default gewählt. In diesem Fall also Operators.Equal

public enum Operators
{
	Equal = 1,
	GreaterThan = 2,
	LowerThan = 3,
	None = 0
}

Hier wurden jetzt Integerwerte zu den einzelnen Einträgen zugewiesen und damit ist der Eintrag Operators.None mit dem Wert 0 der Defaultwert.

Um den Defaultwert abzurufen, gibt es die eine einfache Möglichkeit:

Operators defaultvalue = default(Operators);

Jetzt gibt es aber auch den Fall, dass man selber bestimmen will, welcher Eintrag der Defaultwert ist. Im Idealfall natürlich auch noch so, dass man den Default mit wenig Aufwand ändern kann. Bleiben wir beim obigen Enum als Beispiel. Wir möchten jetzt zum Beispiel haben, dass GreaterThan mit dem Wert 2 als Default verwendet wird. Dann muss man diesen Wert also irgendwie entsprechend kennzeichnen. Es gibt dafür wirklich eine Möglichkeit, damit man das relativ leicht machen kann, und zwar das Attribut DefaultValue aus dem Namespace System.ComponentModel.
Das Ganze sieht dann so aus:

[DefaultValue(Operators.GreaterThan)]
public enum Operators
{
	Equal = 1,
	GreaterThan = 2,
	LowerThan = 3,
	None = 0
}

Leider reicht das alleine aber noch nicht. Stattdessen muss man jetzt auch noch eine kleine Hilfsmethode verwenden, um den Defaultwert zu ermitteln.
Die Methode sieht folgendermaßen aus:

public static class EnumerationsHelper
{
	public static TEnum GetDefaultValue<TEnum>() where TEnum : struct
	{
		Type t = typeof(TEnum);
		DefaultValueAttribute[] attributes = (DefaultValueAttribute[])t.GetCustomAttributes(typeof(DefaultValueAttribute), false);
		if (attributes != null && attributes.Length > 0)
			return (TEnum)attributes[0].Value;
		else
			return default(TEnum);
	}
}

In der Methode wird also das DefaultValueAttribute abgerufen und dann der entsprechende Wert zu diesem Attribut gesucht und zurückgegeben. Wenn das Attribut nicht gefunden wird, wird mit dem bereits bekannten default(TEnum) gearbeitet und der gewöhnliche Defaultwert zurück gegeben.