2010-05-04 76 views
1

我想解析linq提供者的表达式树,并用布尔运算符运行一个小小的障碍。用布尔表达式解析表达式树

我可以解析这个没问题。

var p = products.Where(x=>x.IsAvailable == true).ToList(); 

但是当它写成这样?

var p = products.Where(x=>x.IsAvailable).ToList(); 

我只能得到一个MemberAccess看,我不能看到我是如何演绎,这是真的还是假的(!x.IsAvailable)。任何帮助都会很棒。

谢谢。

回答

1

希望这有助于,

的第一个具有表达式树,如下所示。

RETURN (Binary Expression (MemberAccess, Constant)) 

第二个表达式树如下所示。

RETURN (MemberAccess) 

由于成员的类型是布尔值,所以它的值决定了执行的状态。