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
- FixedTextContainer.cs
 - VsPropertyGrid.cs
 - SqlClientFactory.cs
 - BehaviorEditorPart.cs
 - ProcessModuleCollection.cs
 - AnnotationObservableCollection.cs
 - COM2EnumConverter.cs
 - ParenthesizePropertyNameAttribute.cs
 - ObjectKeyFrameCollection.cs
 - CacheVirtualItemsEvent.cs
 - TypeReference.cs
 - CodeTryCatchFinallyStatement.cs
 - CreateRefExpr.cs
 - HttpWebResponse.cs
 - CultureTableRecord.cs
 - FileRecordSequenceCompletedAsyncResult.cs
 - CodeAttachEventStatement.cs
 - MessageQueueEnumerator.cs
 - RubberbandSelector.cs
 - TrustManagerMoreInformation.cs
 - HostProtectionException.cs
 - Model3DGroup.cs
 - SafeProcessHandle.cs
 - latinshape.cs
 - AtomicFile.cs
 - NameValuePair.cs
 - TypeNameParser.cs
 - ServiceOperation.cs
 - ResolveNameEventArgs.cs
 - RegexMatch.cs
 - DPTypeDescriptorContext.cs
 - MetadataSource.cs
 - HyperlinkAutomationPeer.cs
 - TextBoxView.cs
 - WebSysDisplayNameAttribute.cs
 - EnumerationRangeValidationUtil.cs
 - VectorKeyFrameCollection.cs
 - WSHttpBindingBase.cs
 - DecimalConstantAttribute.cs
 - ExtractorMetadata.cs
 - Version.cs
 - MinimizableAttributeTypeConverter.cs
 - PermissionSetEnumerator.cs
 - SendActivityValidator.cs
 - SmtpDigestAuthenticationModule.cs
 - ServiceCredentialsSecurityTokenManager.cs
 - StyleBamlRecordReader.cs
 - WindowExtensionMethods.cs
 - MembershipSection.cs
 - QueryRelOp.cs
 - StorageInfo.cs
 - TransferMode.cs
 - HandlerBase.cs
 - EmbeddedMailObject.cs
 - DbDataAdapter.cs
 - BackStopAuthenticationModule.cs
 - IriParsingElement.cs
 - Message.cs
 - BuildProviderAppliesToAttribute.cs
 - ProxyGenerator.cs
 - WorkflowQueue.cs
 - CompositeControl.cs
 - Label.cs
 - Header.cs
 - Page.cs
 - SqlRowUpdatingEvent.cs
 - RectAnimation.cs
 - HtmlInputControl.cs
 - TagPrefixAttribute.cs
 - DataProviderNameConverter.cs
 - FilteredDataSetHelper.cs
 - BrowserCapabilitiesFactory.cs
 - TextRangeSerialization.cs
 - UniqueIdentifierService.cs
 - MsmqActivation.cs
 - ExtendedPropertyDescriptor.cs
 - SystemIPv6InterfaceProperties.cs
 - SiteMapNodeItemEventArgs.cs
 - StoryFragments.cs
 - BaseAddressElementCollection.cs
 - BooleanKeyFrameCollection.cs
 - SecurityContextSecurityTokenAuthenticator.cs
 - LineServicesRun.cs
 - TemplateXamlTreeBuilder.cs
 - RequestResizeEvent.cs
 - ListViewUpdatedEventArgs.cs
 - IsolatedStorageFileStream.cs
 - X509Certificate.cs
 - WindowsBrush.cs
 - XmlStreamNodeWriter.cs
 - PhonemeConverter.cs
 - Selector.cs
 - ServiceDurableInstanceContextProvider.cs
 - TranslateTransform3D.cs
 - IteratorFilter.cs
 - MetabaseServerConfig.cs
 - EraserBehavior.cs
 - Parameter.cs
 - CapacityStreamGeometryContext.cs
 - FileLevelControlBuilderAttribute.cs