Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / ndp / fx / src / DataEntity / System / Data / Objects / ELinq / Visitors / LinqTreeNodeEvaluator.cs / 1 / LinqTreeNodeEvaluator.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....], [....] //--------------------------------------------------------------------- using System.Linq.Expressions; using System.Collections.Generic; namespace System.Data.Objects.ELinq { ////// Goes from the bottom to top and nominates nodes where all the nodes /// below the node return true from the shouldBeNominatedDelegate /// internal sealed class LinqTreeNodeEvaluator : ExpressionVisitor { HashSet_nodesToEvaluate; private LinqTreeNodeEvaluator(HashSet nodesToEvaluate) { _nodesToEvaluate = nodesToEvaluate; } internal static Expression EvaluateClosuresAndClientEvalNodes(Expression expression) { return Evaluate(expression, LinqMaximalSubtreeNominator.Nominate( expression, new HashSet (), e => ExpressionEvaluator.IsExpressionNodeAClosure(e) || ExpressionEvaluator.IsExpressionNodeClientEvaluatable(e) ) ); } internal static Expression Evaluate(Expression expression, HashSet nodesToEvaluate) { if (nodesToEvaluate.Count == 0) { // I can save you some time on this one... return expression; } LinqTreeNodeEvaluator nominator = new LinqTreeNodeEvaluator(nodesToEvaluate); return nominator.Visit(expression); } internal override Expression Visit(Expression exp) { if (exp != null && exp.NodeType != ExpressionType.Constant && _nodesToEvaluate.Contains(exp)) { return Expression.Constant(ExpressionEvaluator.EvaluateExpression(exp), exp.Type); } return base.Visit(exp); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....], [....] //--------------------------------------------------------------------- using System.Linq.Expressions; using System.Collections.Generic; namespace System.Data.Objects.ELinq { ////// Goes from the bottom to top and nominates nodes where all the nodes /// below the node return true from the shouldBeNominatedDelegate /// internal sealed class LinqTreeNodeEvaluator : ExpressionVisitor { HashSet_nodesToEvaluate; private LinqTreeNodeEvaluator(HashSet nodesToEvaluate) { _nodesToEvaluate = nodesToEvaluate; } internal static Expression EvaluateClosuresAndClientEvalNodes(Expression expression) { return Evaluate(expression, LinqMaximalSubtreeNominator.Nominate( expression, new HashSet (), e => ExpressionEvaluator.IsExpressionNodeAClosure(e) || ExpressionEvaluator.IsExpressionNodeClientEvaluatable(e) ) ); } internal static Expression Evaluate(Expression expression, HashSet nodesToEvaluate) { if (nodesToEvaluate.Count == 0) { // I can save you some time on this one... return expression; } LinqTreeNodeEvaluator nominator = new LinqTreeNodeEvaluator(nodesToEvaluate); return nominator.Visit(expression); } internal override Expression Visit(Expression exp) { if (exp != null && exp.NodeType != ExpressionType.Constant && _nodesToEvaluate.Contains(exp)) { return Expression.Constant(ExpressionEvaluator.EvaluateExpression(exp), exp.Type); } return base.Visit(exp); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- WorkflowInstanceExtensionManager.cs
- ServerIdentity.cs
- CodeTypeReference.cs
- SafeNativeMethods.cs
- FormViewUpdatedEventArgs.cs
- DataRelationPropertyDescriptor.cs
- QilCloneVisitor.cs
- XhtmlConformanceSection.cs
- PageAdapter.cs
- safelinkcollection.cs
- TabPanel.cs
- TargetParameterCountException.cs
- ProfileServiceManager.cs
- ImportContext.cs
- WebPartTracker.cs
- ControlCachePolicy.cs
- XamlLoadErrorInfo.cs
- DbFunctionCommandTree.cs
- SmiEventStream.cs
- StackSpiller.Generated.cs
- PrivacyNoticeBindingElement.cs
- FixedDSBuilder.cs
- GridProviderWrapper.cs
- DataGridViewTopRowAccessibleObject.cs
- Parsers.cs
- ClonableStack.cs
- DataGridViewColumnStateChangedEventArgs.cs
- OAVariantLib.cs
- InvalidWorkflowException.cs
- MulticastDelegate.cs
- UserControl.cs
- Int32AnimationBase.cs
- LinearGradientBrush.cs
- RelationshipWrapper.cs
- Type.cs
- AutomationPatternInfo.cs
- HttpCachePolicyElement.cs
- Model3DGroup.cs
- SurrogateDataContract.cs
- Trace.cs
- InertiaRotationBehavior.cs
- Codec.cs
- GeneralTransform3DTo2D.cs
- GcHandle.cs
- StreamWriter.cs
- PropertyManager.cs
- ModelChangedEventArgsImpl.cs
- RoutedEvent.cs
- CFGGrammar.cs
- TextModifierScope.cs
- CompiledRegexRunner.cs
- ReflectionHelper.cs
- DbModificationCommandTree.cs
- PagesChangedEventArgs.cs
- HttpException.cs
- PageParser.cs
- OleDbParameterCollection.cs
- SurrogateDataContract.cs
- XmlUnspecifiedAttribute.cs
- GAC.cs
- RequestCache.cs
- SecurityTokenSerializer.cs
- BitmapEffectInputData.cs
- BigInt.cs
- ClientUtils.cs
- UIElementPropertyUndoUnit.cs
- CodeRemoveEventStatement.cs
- BaseInfoTable.cs
- LazyTextWriterCreator.cs
- SynchronizingStream.cs
- StrokeIntersection.cs
- MDIWindowDialog.cs
- RequestTimeoutManager.cs
- ComponentResourceKey.cs
- ValidatingReaderNodeData.cs
- MultiBindingExpression.cs
- ZipPackagePart.cs
- DbParameterCollection.cs
- CmsInterop.cs
- RectKeyFrameCollection.cs
- DateTimeOffsetAdapter.cs
- Converter.cs
- IUnknownConstantAttribute.cs
- TextSpanModifier.cs
- DataGridState.cs
- SQLBytesStorage.cs
- ReaderWriterLockSlim.cs
- TextPattern.cs
- DateBoldEvent.cs
- NetNamedPipeBindingElement.cs
- DefaultParameterValueAttribute.cs
- SudsWriter.cs
- NumericUpDown.cs
- SessionStateSection.cs
- BufferModeSettings.cs
- TrackBar.cs
- BitConverter.cs
- GradientStop.cs
- EntityViewGenerationConstants.cs
- RootBrowserWindowAutomationPeer.cs