Jeg har brugt en del tid på at få en sammenligning med en enum værdi til at virke i en where clause. Der var forsøgt at lave en betingelse i et LINQ udtryk, hvor en enum værdi blev sammenlignet med en streng. Enum værdien holdte på en streng værdi. Ved at lave en .ToString() på enum værdien fik man desværre en runtime fejl: "Method 'System.Object Parse(System.Type, System.String)' has no supported translation to SQL".

Det viser sig, at der desværre ikke findes nogen enum support for SQL ved brug af LINQ, og det er desværre heller ikke noget Microsoft har prioriteret højt i deres seneste opdatering af framework 4.0. Der findes dog en mulighed for at komme udenom dette problem, men det skal betegnes som en work-around, som i virkeligheden kompenserer for Microsofts manglende implementering for support af enums i LINQ to SQL.

Åbn *.dbml filen i en text editor og lokalisér feltet. Feltets type ændres fra "string" eller "varchar" til fx. i mit tilfælde til Type="BusinessLogic.Enums.Severity" med fuld namespace. Dette vil opdatere designer filen med:

[Column(Storage="_Severity", DbType="NVarChar(32) NOT NULL", CanBeNull=false)]
public BusinessLogic.Enums.Severity Severity { ...

Herefter kan ToString() benyttes på værdien og der kommer ingen runtime fejl.
').Where(l.Severity.ToString() == myEnum).OrderByDescending'

!  Bemærk alle efterfølgende opdateringer af *.dbml filen igen vil introducere typen 'string'. Denne work-around skal betragtes som et lille hack, da Microsoft selv ikke har åbnet op for understøttelse af enums i LINQ til SQL. Microsoft er dog klar over dette.