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
- XmlWrappingReader.cs
- CompilerWrapper.cs
- AuthenticationService.cs
- SizeAnimationUsingKeyFrames.cs
- SelectionEditor.cs
- LogSwitch.cs
- UTF32Encoding.cs
- MetadataReference.cs
- Base64Encoding.cs
- AccessControlList.cs
- ValidatorCollection.cs
- ServiceEndpointElement.cs
- MergeEnumerator.cs
- ScriptServiceAttribute.cs
- HtmlTableRowCollection.cs
- View.cs
- nulltextcontainer.cs
- VectorKeyFrameCollection.cs
- Configuration.cs
- EntitySqlQueryBuilder.cs
- ConfigurationElementProperty.cs
- DbConvert.cs
- WebColorConverter.cs
- HtmlInputButton.cs
- Int32Animation.cs
- FileEnumerator.cs
- SQLStringStorage.cs
- BufferedStream.cs
- PathTooLongException.cs
- TypeLoadException.cs
- CachedResourceDictionaryExtension.cs
- MailWebEventProvider.cs
- XmlSchemaObjectCollection.cs
- MetadataItemEmitter.cs
- WebEventTraceProvider.cs
- SessionSwitchEventArgs.cs
- RectangleF.cs
- RSAPKCS1KeyExchangeFormatter.cs
- WebPartActionVerb.cs
- ObjectViewEntityCollectionData.cs
- DataSourceControl.cs
- HiddenField.cs
- SqlDataSourceView.cs
- RubberbandSelector.cs
- RtfControlWordInfo.cs
- ipaddressinformationcollection.cs
- DeflateStream.cs
- UserPersonalizationStateInfo.cs
- SizeLimitedCache.cs
- Rijndael.cs
- DataTemplate.cs
- CapiSafeHandles.cs
- TypedServiceOperationListItem.cs
- MailWebEventProvider.cs
- FlowDocumentView.cs
- COAUTHINFO.cs
- InputMethodStateChangeEventArgs.cs
- ConnectionsZone.cs
- SecurityResources.cs
- SqlCacheDependencySection.cs
- KeysConverter.cs
- UsernameTokenFactoryCredential.cs
- OdbcTransaction.cs
- EncryptedKey.cs
- ArrayMergeHelper.cs
- SecurityTokenException.cs
- SectionInput.cs
- WebPartConnectionsCloseVerb.cs
- SystemColors.cs
- VisualBasicReference.cs
- SqlCommandBuilder.cs
- WhitespaceRuleReader.cs
- Html32TextWriter.cs
- PathGradientBrush.cs
- SecurityUtils.cs
- Substitution.cs
- ExpressionEditorSheet.cs
- CodeCatchClauseCollection.cs
- TraceUtils.cs
- SR.cs
- EndpointConfigContainer.cs
- ReceiveActivityValidator.cs
- NamespaceList.cs
- ObjectManager.cs
- ClientRolePrincipal.cs
- SQLByteStorage.cs
- DataGridPagingPage.cs
- TreeIterators.cs
- Property.cs
- ElapsedEventArgs.cs
- RegistryExceptionHelper.cs
- CodeNamespaceImportCollection.cs
- RIPEMD160Managed.cs
- ClientConvert.cs
- BindingRestrictions.cs
- XsltLoader.cs
- LocatorBase.cs
- NavigationEventArgs.cs
- InplaceBitmapMetadataWriter.cs
- MediaElement.cs