Code:
                         / Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / ndp / fx / src / DLinq / Dlinq / SqlClient / Query / SqlAggregateChecker.cs / 1 / SqlAggregateChecker.cs
                        
                        
                            using System; 
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Data.Linq;
 
namespace System.Data.Linq.SqlClient {
 
    internal class SqlAggregateChecker { 
        Visitor visitor;
 
        internal SqlAggregateChecker() {
            this.visitor = new Visitor();
        }
 
        internal bool HasAggregates(SqlNode node) {
            visitor.hasAggregates = false; 
            visitor.Visit(node); 
            return visitor.hasAggregates;
        } 
        class Visitor : SqlVisitor {
            internal bool hasAggregates;
 
            internal Visitor() {
            } 
 
            internal override SqlExpression VisitSubSelect(SqlSubSelect ss) {
                return ss; 
            }
            internal override SqlSource VisitSource(SqlSource source) {
                return source;
            } 
            internal override SqlExpression VisitUnaryOperator(SqlUnary uo) {
                switch (uo.NodeType) { 
                    case SqlNodeType.Min: 
                    case SqlNodeType.Max:
                    case SqlNodeType.Avg: 
                    case SqlNodeType.Sum:
                    case SqlNodeType.Count:
                    case SqlNodeType.LongCount:
                        this.hasAggregates = true; 
                        return uo;
                    default: 
                        return base.VisitUnaryOperator(uo); 
                }
            } 
        }
    }
}
// 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.Data.Linq;
 
namespace System.Data.Linq.SqlClient {
 
    internal class SqlAggregateChecker { 
        Visitor visitor;
 
        internal SqlAggregateChecker() {
            this.visitor = new Visitor();
        }
 
        internal bool HasAggregates(SqlNode node) {
            visitor.hasAggregates = false; 
            visitor.Visit(node); 
            return visitor.hasAggregates;
        } 
        class Visitor : SqlVisitor {
            internal bool hasAggregates;
 
            internal Visitor() {
            } 
 
            internal override SqlExpression VisitSubSelect(SqlSubSelect ss) {
                return ss; 
            }
            internal override SqlSource VisitSource(SqlSource source) {
                return source;
            } 
            internal override SqlExpression VisitUnaryOperator(SqlUnary uo) {
                switch (uo.NodeType) { 
                    case SqlNodeType.Min: 
                    case SqlNodeType.Max:
                    case SqlNodeType.Avg: 
                    case SqlNodeType.Sum:
                    case SqlNodeType.Count:
                    case SqlNodeType.LongCount:
                        this.hasAggregates = true; 
                        return uo;
                    default: 
                        return base.VisitUnaryOperator(uo); 
                }
            } 
        }
    }
}
// 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
- HtmlGenericControl.cs
- ExceptionRoutedEventArgs.cs
- ContainerAction.cs
- Gdiplus.cs
- Lookup.cs
- WindowsRegion.cs
- AutomationPatternInfo.cs
- BuiltInExpr.cs
- MetadataArtifactLoader.cs
- RelationshipDetailsRow.cs
- InstanceDescriptor.cs
- FixedSOMPageElement.cs
- FileLogRecord.cs
- TreeNodeBindingCollection.cs
- EnumConverter.cs
- Transaction.cs
- HttpChannelListener.cs
- FilterableAttribute.cs
- TableLayout.cs
- RefExpr.cs
- ZipIOExtraFieldZip64Element.cs
- EdmValidator.cs
- DateTimeStorage.cs
- ChtmlPhoneCallAdapter.cs
- UInt32Storage.cs
- SqlDataSource.cs
- RegexNode.cs
- SignedXmlDebugLog.cs
- CompilationRelaxations.cs
- SimpleNameService.cs
- FloaterBaseParaClient.cs
- InfoCardRSAPKCS1KeyExchangeDeformatter.cs
- MenuItemStyle.cs
- EventSinkHelperWriter.cs
- SimpleColumnProvider.cs
- Clock.cs
- EditingMode.cs
- TemplatePartAttribute.cs
- RadioButtonBaseAdapter.cs
- XmlSchemaValidator.cs
- Int16.cs
- DelimitedListTraceListener.cs
- EDesignUtil.cs
- PropertyFilterAttribute.cs
- ListViewInsertEventArgs.cs
- precedingsibling.cs
- LookupBindingPropertiesAttribute.cs
- xdrvalidator.cs
- RoleGroup.cs
- ISSmlParser.cs
- NamespaceCollection.cs
- Monitor.cs
- ToolstripProfessionalRenderer.cs
- ApplicationServiceHelper.cs
- RegexGroup.cs
- AutomationAttributeInfo.cs
- DbParameterHelper.cs
- Timer.cs
- SessionStateItemCollection.cs
- NonClientArea.cs
- LoadedOrUnloadedOperation.cs
- DocComment.cs
- TimeSpanMinutesConverter.cs
- RoutedPropertyChangedEventArgs.cs
- XDeferredAxisSource.cs
- SafeRegistryKey.cs
- InvalidWMPVersionException.cs
- WeakEventManager.cs
- XmlElementAttribute.cs
- EnumValAlphaComparer.cs
- ProviderConnectionPoint.cs
- HttpApplication.cs
- AnnotationObservableCollection.cs
- RootProfilePropertySettingsCollection.cs
- MD5CryptoServiceProvider.cs
- Utils.cs
- RadialGradientBrush.cs
- TCEAdapterGenerator.cs
- IPAddressCollection.cs
- ServiceOperationParameter.cs
- Grid.cs
- TreeView.cs
- ReadOnlyDictionary.cs
- BuildProvidersCompiler.cs
- CodeExporter.cs
- GZipDecoder.cs
- StringInfo.cs
- SimpleModelProvider.cs
- MethodCallTranslator.cs
- DataViewListener.cs
- BrowserTree.cs
- XmlSchemaParticle.cs
- DecimalStorage.cs
- ClrProviderManifest.cs
- ExpressionBuilder.cs
- propertytag.cs
- XmlHierarchicalDataSourceView.cs
- XmlSerializer.cs
- IteratorDescriptor.cs
- HybridWebProxyFinder.cs