Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / ndp / fx / src / DLinq / Dlinq / SqlClient / Query / SqlAliasesReferenced.cs / 1 / SqlAliasesReferenced.cs
using System; using System.Collections.Generic; using System.Text; namespace System.Data.Linq.SqlClient { ////// Find referenced Aliases within a node. /// internal static class SqlAliasesReferenced { ////// Private visitor which walks the tree and looks for referenced aliases. /// private class Visitor : SqlVisitor { internal IEnumerablealiases; internal bool referencesAnyMatchingAliases = false; internal override SqlNode Visit(SqlNode node) { // Short-circuit when the answer is alreading known if (this.referencesAnyMatchingAliases) { return node; } return base.Visit(node); } internal SqlAlias VisitAliasConsumed(SqlAlias a) { if (a == null) return a; bool match = false; foreach (SqlAlias alias in aliases) if (alias == a) { match = true; break; } if (match) { this.referencesAnyMatchingAliases = true; } return a; } internal override SqlExpression VisitColumn(SqlColumn col) { VisitAliasConsumed(col.Alias); VisitExpression(col.Expression); return col; } internal override SqlExpression VisitColumnRef(SqlColumnRef cref) { VisitAliasConsumed(cref.Column.Alias); VisitExpression(cref.Column.Expression); return cref; } } /// /// Returns true iff the given node references any aliases the list of 'aliases'. /// internal static bool ReferencesAny(SqlNode node, IEnumerablealiases) { Visitor visitor = new Visitor(); visitor.aliases = aliases; visitor.Visit(node); return visitor.referencesAnyMatchingAliases; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System; using System.Collections.Generic; using System.Text; namespace System.Data.Linq.SqlClient { /// /// Find referenced Aliases within a node. /// internal static class SqlAliasesReferenced { ////// Private visitor which walks the tree and looks for referenced aliases. /// private class Visitor : SqlVisitor { internal IEnumerablealiases; internal bool referencesAnyMatchingAliases = false; internal override SqlNode Visit(SqlNode node) { // Short-circuit when the answer is alreading known if (this.referencesAnyMatchingAliases) { return node; } return base.Visit(node); } internal SqlAlias VisitAliasConsumed(SqlAlias a) { if (a == null) return a; bool match = false; foreach (SqlAlias alias in aliases) if (alias == a) { match = true; break; } if (match) { this.referencesAnyMatchingAliases = true; } return a; } internal override SqlExpression VisitColumn(SqlColumn col) { VisitAliasConsumed(col.Alias); VisitExpression(col.Expression); return col; } internal override SqlExpression VisitColumnRef(SqlColumnRef cref) { VisitAliasConsumed(cref.Column.Alias); VisitExpression(cref.Column.Expression); return cref; } } /// /// Returns true iff the given node references any aliases the list of 'aliases'. /// internal static bool ReferencesAny(SqlNode node, IEnumerablealiases) { Visitor visitor = new Visitor(); visitor.aliases = aliases; visitor.Visit(node); return visitor.referencesAnyMatchingAliases; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- BooleanStorage.cs
- CompilationUnit.cs
- ItemContainerGenerator.cs
- StyleReferenceConverter.cs
- TypefaceMetricsCache.cs
- BuildProviderAppliesToAttribute.cs
- VisualStyleTypesAndProperties.cs
- ResetableIterator.cs
- StoreContentChangedEventArgs.cs
- MimeObjectFactory.cs
- LinkLabelLinkClickedEvent.cs
- WpfXamlType.cs
- ApplicationServicesHostFactory.cs
- Monitor.cs
- ExternalCalls.cs
- Speller.cs
- IIS7UserPrincipal.cs
- SyndicationDeserializer.cs
- URLIdentityPermission.cs
- OpenFileDialog.cs
- TextFragmentEngine.cs
- ITreeGenerator.cs
- ObjectStateEntryDbDataRecord.cs
- ResourcesGenerator.cs
- NTAccount.cs
- SettingsPropertyWrongTypeException.cs
- BinaryObjectWriter.cs
- ChineseLunisolarCalendar.cs
- JulianCalendar.cs
- LineBreak.cs
- XmlCustomFormatter.cs
- WebConfigurationHostFileChange.cs
- InputLanguageEventArgs.cs
- ProfilePropertySettingsCollection.cs
- BaseDataBoundControl.cs
- DateRangeEvent.cs
- ChangePassword.cs
- TreeNodeStyle.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- ReadWriteControlDesigner.cs
- MasterPageBuildProvider.cs
- LocationInfo.cs
- ConfigurationStrings.cs
- CompositeFontInfo.cs
- ListViewInsertedEventArgs.cs
- FileStream.cs
- ScrollContentPresenter.cs
- StringCollectionMarkupSerializer.cs
- PersonalizationProviderCollection.cs
- ObjectDataSourceEventArgs.cs
- AllMembershipCondition.cs
- ModuleBuilder.cs
- EnlistmentTraceIdentifier.cs
- TextProperties.cs
- Classification.cs
- NotCondition.cs
- EventLogException.cs
- CompletionCallbackWrapper.cs
- XmlDictionary.cs
- InvokePatternIdentifiers.cs
- ReadOnlyState.cs
- PartialClassGenerationTaskInternal.cs
- RC2.cs
- FormView.cs
- Italic.cs
- CacheDependency.cs
- GeometryHitTestParameters.cs
- SerializableAttribute.cs
- DocumentScope.cs
- DBAsyncResult.cs
- UIHelper.cs
- HtmlHead.cs
- OperationFormatUse.cs
- precedingsibling.cs
- DataBindEngine.cs
- pingexception.cs
- EventWaitHandleSecurity.cs
- cookiecontainer.cs
- PropertyItem.cs
- TextServicesDisplayAttributePropertyRanges.cs
- FlowLayoutPanelDesigner.cs
- ContentType.cs
- XmlSchemaSet.cs
- OneOfConst.cs
- XmlQueryCardinality.cs
- SemanticAnalyzer.cs
- TraceContextEventArgs.cs
- StringOutput.cs
- PresentationTraceSources.cs
- InkCanvasSelectionAdorner.cs
- GeometryModel3D.cs
- CapabilitiesPattern.cs
- ExpandableObjectConverter.cs
- CodeTypeDeclarationCollection.cs
- PrePrepareMethodAttribute.cs
- CryptoApi.cs
- IISMapPath.cs
- ListBindingConverter.cs
- XPathNodeInfoAtom.cs
- PathSegment.cs