6
Diciamo che ho il seguente enum.Come generare un'espressione dinamica con un operatore ed enumerazione bit a bit?
[Flags] public enum Color { Red = 1, Blue = 2, Green = 4 }
Ora, desidero utilizzare la seguente query per trovare le camicie rosse.
Shirts.Where(x => (x.Color & Color.Red) != 0)
E funziona bene, ma quando provo a costruire questo in modo dinamico:
var color= Expression.Constant(Color.Red);
var property = Expression.Property(Expression.Parameter(typeof(Shirt)), "Color");
Expression.NotEqual(Expression.And(property, color), Expression.Constant(0));
ottengo la seguente eccezione:
L'operatore binario e non è definito per i tipi "MyEnums.Color" e "MyEnums.Color".
sto usando .NET 4.5
Qualche idea?
+1 per edilizia un'espressione complessa. Puoi sempre vedere la struttura di Expression usando LINQPad 'Dump' per' Expression> exp = shirt => shirt.Color & Color.Red; ' –
Wow, è stato veloce, e funziona anche: –
@ IvanMilutinović Sono contento che funzioni - sono passati un paio d'anni da quando avevo bisogno di quel metodo e l'ho scritto solo dalla memoria ...: o :) –