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
- SQLDecimalStorage.cs
- DeploymentSection.cs
- ControlAdapter.cs
- DoubleAverageAggregationOperator.cs
- AlphabeticalEnumConverter.cs
- XPathNodeIterator.cs
- WebControlsSection.cs
- DialogWindow.cs
- DescendantBaseQuery.cs
- FixUpCollection.cs
- DesignerExtenders.cs
- CheckBoxPopupAdapter.cs
- Focus.cs
- MultipartIdentifier.cs
- RequiredFieldValidator.cs
- TimelineGroup.cs
- HMACSHA1.cs
- Debug.cs
- RetrieveVirtualItemEventArgs.cs
- Attributes.cs
- EntityCollectionChangedParams.cs
- DataServiceClientException.cs
- AlphaSortedEnumConverter.cs
- SymbolTable.cs
- HtmlAnchor.cs
- AmbientLight.cs
- AlignmentYValidation.cs
- WindowsListViewItemCheckBox.cs
- Listen.cs
- Size.cs
- EventOpcode.cs
- ToolStripScrollButton.cs
- ResetableIterator.cs
- RestHandlerFactory.cs
- ContentOperations.cs
- PrintDialogException.cs
- SpecialTypeDataContract.cs
- Attachment.cs
- SubpageParagraph.cs
- RequestCache.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- ExpanderAutomationPeer.cs
- NavigationHelper.cs
- ComAdminInterfaces.cs
- CodeDirectiveCollection.cs
- PixelShader.cs
- StylusTouchDevice.cs
- CompilerScope.Storage.cs
- WebConfigurationHost.cs
- RepeatButtonAutomationPeer.cs
- ResourceIDHelper.cs
- SectionUpdates.cs
- QuaternionAnimation.cs
- Wildcard.cs
- RequestCacheEntry.cs
- RecipientInfo.cs
- NumberSubstitution.cs
- MessageQueueKey.cs
- HttpModuleAction.cs
- ArrayList.cs
- Activator.cs
- DescriptionAttribute.cs
- ISAPIWorkerRequest.cs
- StreamWithDictionary.cs
- InvokePattern.cs
- Pair.cs
- HealthMonitoringSectionHelper.cs
- GridItemProviderWrapper.cs
- ChildrenQuery.cs
- SystemThemeKey.cs
- ListItemConverter.cs
- AssemblyResolver.cs
- PairComparer.cs
- AutomationAttributeInfo.cs
- TrackingMemoryStreamFactory.cs
- SharedUtils.cs
- ViewgenGatekeeper.cs
- ParamArrayAttribute.cs
- SignatureHelper.cs
- Size3DConverter.cs
- TypeElement.cs
- EditingCoordinator.cs
- EntityConnection.cs
- BufferModesCollection.cs
- ProfileManager.cs
- FixedSOMContainer.cs
- Timer.cs
- ToolStripScrollButton.cs
- EventListener.cs
- TraceUtils.cs
- ChannelListenerBase.cs
- SqlDataSourceCommandEventArgs.cs
- XmlSchemaType.cs
- ValueChangedEventManager.cs
- MemoryStream.cs
- SafeReversePInvokeHandle.cs
- NGCSerializationManager.cs
- WindowsToolbar.cs
- HTTPNotFoundHandler.cs
- ObjectQueryExecutionPlan.cs