3
我有一個查詢,像這樣:獲取所有「其中」呼叫使用ExpressionVisitor
var query = from sessions in dataSet
where (names.Contains(sessions.Username))
where (sessions.Login.TimeOfAction == dt)
select new { sessions.Username,
sessions.Login,
sessions.Logout, sessions.Duration };
我想要實現的ExpressionVisitor提取兩個where子句爲lambda的,但到目前爲止只能夠得到第一個使用名爲'InnermostWhereFinder'的類,該類來自MSDN教程,用於TerraServer Web服務的自定義查詢提供程序。
是:
internal class InnermostWhereFinder : ExpressionVisitor
{
private MethodCallExpression innermostWhereExpression;
public MethodCallExpression GetInnermostWhere(Expression expression)
{
Visit(expression);
return innermostWhereExpression;
}
protected override Expression VisitMethodCall(MethodCallExpression expression)
{
if (expression.Method.Name == "Where")
innermostWhereExpression = expression;
Visit(expression.Arguments[0]);
return expression;
}
}
伊夫試圖調整這一類巨資返回兩種情況:沒有成功的條款。找不到任何有關這方面的優秀文檔,任何人都可以幫忙嗎?這將最終需要導致我可以使用多個LambdaExpression對象,我認爲。
謝謝,這是有效的。還有一個問題......你知道是否可以從Exp樹中刪除某些where子句? – Sean 2010-12-23 19:38:33