Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DLinq / Dlinq / SqlClient / Query / SqlTopReducer.cs / 1305376 / SqlTopReducer.cs
using System; using System.Collections.Generic; using System.Linq.Expressions; using System.Reflection; using System.Data.Linq; using System.Data.Linq.Provider; using System.Linq; namespace System.Data.Linq.SqlClient { internal class SqlTopReducer { internal static SqlNode Reduce(SqlNode node, SqlNodeAnnotations annotations, SqlFactory sql) { return new Visitor(annotations, sql).Visit(node); } class Visitor : SqlVisitor { SqlNodeAnnotations annotations; SqlFactory sql; internal Visitor(SqlNodeAnnotations annotations, SqlFactory sql) { this.annotations = annotations; this.sql = sql; } internal override SqlSelect VisitSelect(SqlSelect select) { base.VisitSelect(select); if (select.Top != null) { if (select.Top.NodeType == SqlNodeType.Value) { SqlValue val = (SqlValue)select.Top; // convert to literal value for SQL2K compatibility if (val.IsClientSpecified) { select.Top = sql.Value(val.ClrType, val.SqlType, val.Value, false, val.SourceExpression); } } else { // cannot be converted to literal value. note that this select is not SQL2K compatible this.annotations.Add(select.Top, new SqlServerCompatibilityAnnotation(Strings.SourceExpressionAnnotation(select.Top.SourceExpression), SqlProvider.ProviderMode.Sql2000)); } } return select; } } } } // 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.Linq.Expressions; using System.Reflection; using System.Data.Linq; using System.Data.Linq.Provider; using System.Linq; namespace System.Data.Linq.SqlClient { internal class SqlTopReducer { internal static SqlNode Reduce(SqlNode node, SqlNodeAnnotations annotations, SqlFactory sql) { return new Visitor(annotations, sql).Visit(node); } class Visitor : SqlVisitor { SqlNodeAnnotations annotations; SqlFactory sql; internal Visitor(SqlNodeAnnotations annotations, SqlFactory sql) { this.annotations = annotations; this.sql = sql; } internal override SqlSelect VisitSelect(SqlSelect select) { base.VisitSelect(select); if (select.Top != null) { if (select.Top.NodeType == SqlNodeType.Value) { SqlValue val = (SqlValue)select.Top; // convert to literal value for SQL2K compatibility if (val.IsClientSpecified) { select.Top = sql.Value(val.ClrType, val.SqlType, val.Value, false, val.SourceExpression); } } else { // cannot be converted to literal value. note that this select is not SQL2K compatible this.annotations.Add(select.Top, new SqlServerCompatibilityAnnotation(Strings.SourceExpressionAnnotation(select.Top.SourceExpression), SqlProvider.ProviderMode.Sql2000)); } } return select; } } } } // 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
- ErrorItem.cs
- DataRowView.cs
- MultiTrigger.cs
- rsa.cs
- CopyNodeSetAction.cs
- ServiceContractDetailViewControl.cs
- SuppressMessageAttribute.cs
- BitmapEffectGeneralTransform.cs
- BasicExpressionVisitor.cs
- ProcessInfo.cs
- DecoderNLS.cs
- DesignBinding.cs
- EventSetter.cs
- WsdlWriter.cs
- XmlAnyElementAttribute.cs
- CodeIterationStatement.cs
- DefaultAuthorizationContext.cs
- MobileCapabilities.cs
- Point.cs
- BaseTemplatedMobileComponentEditor.cs
- SqlErrorCollection.cs
- SqlMethodCallConverter.cs
- ConnectionInterfaceCollection.cs
- Solver.cs
- TcpProcessProtocolHandler.cs
- WebHostScriptMappingsInstallComponent.cs
- StateWorkerRequest.cs
- SimpleTypeResolver.cs
- SettingsPropertyCollection.cs
- FixedSOMImage.cs
- DoubleUtil.cs
- ChtmlTextWriter.cs
- OlePropertyStructs.cs
- BrowserInteropHelper.cs
- DateBoldEvent.cs
- PropertyMapper.cs
- MSAAWinEventWrap.cs
- AddToCollection.cs
- _ListenerAsyncResult.cs
- MetadataArtifactLoaderResource.cs
- DatagridviewDisplayedBandsData.cs
- DescendantQuery.cs
- ContainerSelectorGlyph.cs
- TargetConverter.cs
- ListViewUpdatedEventArgs.cs
- parserscommon.cs
- StringStorage.cs
- AmbientLight.cs
- PolygonHotSpot.cs
- WSSecureConversation.cs
- Int16Animation.cs
- XmlSecureResolver.cs
- WebConfigurationManager.cs
- SQLGuidStorage.cs
- InputMethod.cs
- TagMapInfo.cs
- SqlCommandSet.cs
- LockedActivityGlyph.cs
- Package.cs
- MultilineStringConverter.cs
- FtpCachePolicyElement.cs
- PageAsyncTaskManager.cs
- EdmItemError.cs
- TreeView.cs
- Funcletizer.cs
- XmlSerializerOperationGenerator.cs
- ProtectedProviderSettings.cs
- FastPropertyAccessor.cs
- IdentityHolder.cs
- PagesSection.cs
- CompositeControl.cs
- FramingDecoders.cs
- ObjectTag.cs
- FormView.cs
- BinaryParser.cs
- InternalConfigConfigurationFactory.cs
- MouseWheelEventArgs.cs
- TextContainerChangedEventArgs.cs
- SchemeSettingElementCollection.cs
- XmlILIndex.cs
- Brushes.cs
- FileVersion.cs
- HyperLinkStyle.cs
- DiscardableAttribute.cs
- X509ScopedServiceCertificateElement.cs
- BamlBinaryWriter.cs
- RijndaelCryptoServiceProvider.cs
- StateManager.cs
- QueryIntervalOp.cs
- XmlDomTextWriter.cs
- GiveFeedbackEvent.cs
- ExpressionBindingCollection.cs
- CurrentTimeZone.cs
- UriScheme.cs
- TextBox.cs
- XmlSchemaAny.cs
- ParenthesizePropertyNameAttribute.cs
- QueryReaderSettings.cs
- XsltFunctions.cs
- ReachIDocumentPaginatorSerializer.cs