C#表达式,VS将枚举转换为int,但不转换为LinqPad

C#表达式,VS将枚举转换为int,但不转换为LinqPad,c#,reflection,enums,linqpad,linq-expressions,C#,Reflection,Enums,Linqpad,Linq Expressions,假设这个相当简单的表达式: Expression<Func<DayOfWeek, bool>> filter = d => d == DayOfWeek.Friday; expressionfilter=d=>d==DayOfWeek.Friday; 在LinqPad中,我得到了右侧部分的UnaryExpression,这正是我想要的,因此我可以使用枚举值和类型: 但是,在VS中,我得到了一个完全不同的ConstantExpression,它将值转换为整数:

假设这个相当简单的表达式:

Expression<Func<DayOfWeek, bool>> filter = d => d == DayOfWeek.Friday;
expressionfilter=d=>d==DayOfWeek.Friday;
在LinqPad中,我得到了右侧部分的
UnaryExpression
,这正是我想要的,因此我可以使用枚举值和类型:

但是,在VS中,我得到了一个完全不同的
ConstantExpression
,它将值转换为整数:

我真的不知道为什么会这样。在VS或其他游戏中,我是否缺少一个全局设置

2015年和2010年也是如此


LINQPad 5.02.03

可能与此有关?我相信是的。然而,我不知道这个问题是否应该标记为重复,因为它被解释得相当不同,我会说它是相同的。最终,编译器似乎是在内联枚举的底层值,即使使用调试配置也是如此。如果查看disassembly,可以看到表达式是使用常量int构建的,而LINQPad脚本则没有。尽管如此,我还是希望LINQPad使用相同的编译器(运行LINQPad 5)。。。或者它是用CodeDom完成的,这是不同的吗?我不能把它标记为重复的,因为另一个问题没有一个可接受的答案。最后我不在乎,只要我们找到解决办法。在我的例子中,当我检测到表达式的任一侧为enum时,我可以将转换返回到enum,但这有点难看,我宁愿不要。值得一提的是,我在LinqPad(v4.57.02)中得到了相同的
常量(5)