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
- DesignerView.Commands.cs
- TaskFactory.cs
- XmlSchemaElement.cs
- XmlAttributeOverrides.cs
- DiscoveryDocumentSerializer.cs
- BitmapEffectDrawing.cs
- EventLogEntry.cs
- SQLResource.cs
- UInt16.cs
- ContextBase.cs
- Graph.cs
- DbQueryCommandTree.cs
- Translator.cs
- WSDualHttpBindingCollectionElement.cs
- DataGridViewCellPaintingEventArgs.cs
- RowBinding.cs
- TypeInfo.cs
- SiteMapNodeCollection.cs
- TextEffect.cs
- PrivacyNoticeBindingElementImporter.cs
- ZoneButton.cs
- RsaSecurityToken.cs
- WebPartVerb.cs
- WindowsListViewScroll.cs
- OperatingSystem.cs
- ParserHooks.cs
- ZipArchive.cs
- Helpers.cs
- XmlExpressionDumper.cs
- UDPClient.cs
- WebHttpSecurityElement.cs
- DBConnection.cs
- Base64WriteStateInfo.cs
- FillErrorEventArgs.cs
- AnnotationHighlightLayer.cs
- KeyValueConfigurationCollection.cs
- XPathPatternBuilder.cs
- HttpConfigurationSystem.cs
- SHA256.cs
- FrameworkElementFactoryMarkupObject.cs
- CacheSection.cs
- ProgressBar.cs
- PropertyAccessVisitor.cs
- DSACryptoServiceProvider.cs
- ColumnClickEvent.cs
- ConfigurationElementCollection.cs
- HtmlGenericControl.cs
- ProfileManager.cs
- Int32CollectionValueSerializer.cs
- CheckBoxField.cs
- CultureInfoConverter.cs
- PageVisual.cs
- BamlWriter.cs
- TitleStyle.cs
- SynchronizedInputProviderWrapper.cs
- PathStreamGeometryContext.cs
- dbdatarecord.cs
- DataGridViewColumnHeaderCell.cs
- Decoder.cs
- SecureStringHasher.cs
- ThreadInterruptedException.cs
- ImageAttributes.cs
- WebResourceAttribute.cs
- PrintControllerWithStatusDialog.cs
- PrimitiveCodeDomSerializer.cs
- TextTreeUndo.cs
- WebPartManagerInternals.cs
- ContextBase.cs
- ControlsConfig.cs
- ListViewItemEventArgs.cs
- PrinterSettings.cs
- ComboBoxAutomationPeer.cs
- XmlDataProvider.cs
- WeakRefEnumerator.cs
- UserNameSecurityTokenParameters.cs
- DataGridViewAutoSizeModeEventArgs.cs
- EventSinkHelperWriter.cs
- MouseGestureConverter.cs
- LayoutTableCell.cs
- XPathChildIterator.cs
- RadialGradientBrush.cs
- ObjectAnimationBase.cs
- QueryExpression.cs
- AssociatedControlConverter.cs
- WebBrowserSiteBase.cs
- FontNamesConverter.cs
- EditableLabelControl.cs
- StylusPointDescription.cs
- CacheEntry.cs
- XPathPatternBuilder.cs
- GridViewAutomationPeer.cs
- DependencyPropertyKind.cs
- AnnotationAuthorChangedEventArgs.cs
- LineInfo.cs
- ControlBindingsConverter.cs
- LocatorPartList.cs
- CollectionContainer.cs
- EditingCoordinator.cs
- Cursor.cs
- ButtonBaseAutomationPeer.cs