Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DLinq / Dlinq / SqlClient / Query / SqlAliasesReferenced.cs / 1305376 / 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
- CompleteWizardStep.cs
- HtmlControl.cs
- ApplicationDirectory.cs
- Base64Encoder.cs
- SqlDataRecord.cs
- InputProviderSite.cs
- SqlConnection.cs
- EmbeddedMailObjectsCollection.cs
- XmlAttributeOverrides.cs
- ReflectPropertyDescriptor.cs
- Visitor.cs
- _LocalDataStoreMgr.cs
- ToolZone.cs
- EqualityComparer.cs
- LicenseManager.cs
- LinearKeyFrames.cs
- SoapCommonClasses.cs
- HandlerBase.cs
- NameTable.cs
- WasHttpModulesInstallComponent.cs
- _OverlappedAsyncResult.cs
- SqlDataSourceEnumerator.cs
- SystemWebCachingSectionGroup.cs
- WebCodeGenerator.cs
- XslTransformFileEditor.cs
- TaskFormBase.cs
- RelationshipDetailsRow.cs
- SecurityPolicyVersion.cs
- IgnoreDeviceFilterElement.cs
- VideoDrawing.cs
- Image.cs
- Visual3D.cs
- XsltArgumentList.cs
- ContentType.cs
- DotAtomReader.cs
- RSAPKCS1SignatureDeformatter.cs
- StylusPointProperty.cs
- SqlMultiplexer.cs
- IndexOutOfRangeException.cs
- SqlTypeSystemProvider.cs
- HttpClientCertificate.cs
- RectangleHotSpot.cs
- XamlDesignerSerializationManager.cs
- PointF.cs
- PageFunction.cs
- WeakEventTable.cs
- WeakReferenceKey.cs
- TableLayoutStyle.cs
- Rights.cs
- Main.cs
- ObjectDataSourceMethodEventArgs.cs
- FilterException.cs
- RadioButtonList.cs
- WsdlImporter.cs
- Predicate.cs
- ResourceExpressionBuilder.cs
- DataGridCommandEventArgs.cs
- SQLSingle.cs
- TrackBar.cs
- RadioButton.cs
- DataGridCaption.cs
- Context.cs
- DataGridRowsPresenter.cs
- EnumerableWrapperWeakToStrong.cs
- CancelAsyncOperationRequest.cs
- EntityContainerAssociationSetEnd.cs
- Assert.cs
- SoapTypeAttribute.cs
- FilteredReadOnlyMetadataCollection.cs
- BodyWriter.cs
- MissingMemberException.cs
- GeneralTransform3DTo2DTo3D.cs
- IISMapPath.cs
- AuthorizationRule.cs
- InputScopeNameConverter.cs
- COM2PropertyPageUITypeConverter.cs
- AppearanceEditorPart.cs
- GenericEnumConverter.cs
- VerificationAttribute.cs
- SiteOfOriginPart.cs
- QilCloneVisitor.cs
- DrawToolTipEventArgs.cs
- XmlSchemaAnyAttribute.cs
- PolicyStatement.cs
- DataContractSerializerOperationFormatter.cs
- EditorZone.cs
- LineBreakRecord.cs
- _RequestLifetimeSetter.cs
- Misc.cs
- EraserBehavior.cs
- PersonalizableTypeEntry.cs
- CancellableEnumerable.cs
- RegexMatch.cs
- ExclusiveTcpListener.cs
- SoapEnumAttribute.cs
- RangeValidator.cs
- ImageListStreamer.cs
- SocketElement.cs
- SecurityElement.cs
- DNS.cs