6
假設我有以下枚舉。如何使用按位運算符和枚舉生成動態表達式?
[Flags] public enum Color { Red = 1, Blue = 2, Green = 4 }
現在,我想使用以下查詢來查找紅襯衫。
Shirts.Where(x => (x.Color & Color.Red) != 0)
,它工作得很好,但是當我嘗試動態構建這樣的:
var color= Expression.Constant(Color.Red);
var property = Expression.Property(Expression.Parameter(typeof(Shirt)), "Color");
Expression.NotEqual(Expression.And(property, color), Expression.Constant(0));
我得到以下異常:
二元經營者和無定義類型'MyEnums.Color' 和'MyEnums.Color'。
我使用.NET 4.5
有什麼想法?
1爲複雜的表達式建築物。您可以隨時使用LINQPad'Dump'查看錶達式的結構,用於表達式> exp = shirt => shirt.Color&Color.Red;' –
2013-03-27 14:11:22
哇,這很快,也很有效: ) – 2013-03-27 14:14:26
@IvanMilutinović很高興它的工作原理 - 我需要這種方法已經有幾年了,而且我只是從記憶中寫下來的......:o :) – 2013-03-27 14:16:32