Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Common / CommandTrees / Aggregates.cs / 1305376 / Aggregates.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System; using System.Data.Common; using System.Collections.Generic; using System.Data.Metadata.Edm; using System.Data.Common.CommandTrees.Internal; using System.Diagnostics; namespace System.Data.Common.CommandTrees { ////// Aggregates are pseudo-expressions. They look and feel like expressions, but /// are severely restricted in where they can appear - only in the aggregates clause /// of a group-by expression. /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Db")] public abstract class DbAggregate { private readonly DbExpressionList _args; private readonly TypeUsage _type; internal DbAggregate(TypeUsage resultType, DbExpressionList arguments) { Debug.Assert(resultType != null, "DbAggregate.ResultType cannot be null"); Debug.Assert(arguments != null, "DbAggregate.Arguments cannot be null"); Debug.Assert(arguments.Count == 1, "DbAggregate requires a single argument"); this._type = resultType; this._args = arguments; } ////// Gets the result type of this aggregate /// public TypeUsage ResultType { get { return _type; } } ////// Gets the list of expressions that define the arguments to the aggregate. /// public IListArguments { get { return _args; } } } /// /// The aggregate type that corresponds to exposing the collection of elements that comprise a group /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Db")] public sealed class DbGroupAggregate : DbAggregate { internal DbGroupAggregate(TypeUsage resultType, DbExpressionList arguments) : base(resultType, arguments) { } } ////// The aggregate type that corresponds to the invocation of an aggregate function. /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Db")] public sealed class DbFunctionAggregate : DbAggregate { private bool _distinct; EdmFunction _aggregateFunction; internal DbFunctionAggregate(TypeUsage resultType, DbExpressionList arguments, EdmFunction function, bool isDistinct) : base(resultType, arguments) { Debug.Assert(function != null, "DbFunctionAggregate.Function cannot be null"); _aggregateFunction = function; _distinct = isDistinct; } ////// Gets a value indicating whether the aggregate function is applied in a distinct fashion /// public bool Distinct { get { return _distinct; } } ////// Gets the method metadata that specifies the aggregate function to invoke. /// public EdmFunction Function { get { return _aggregateFunction; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System; using System.Data.Common; using System.Collections.Generic; using System.Data.Metadata.Edm; using System.Data.Common.CommandTrees.Internal; using System.Diagnostics; namespace System.Data.Common.CommandTrees { ////// Aggregates are pseudo-expressions. They look and feel like expressions, but /// are severely restricted in where they can appear - only in the aggregates clause /// of a group-by expression. /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Db")] public abstract class DbAggregate { private readonly DbExpressionList _args; private readonly TypeUsage _type; internal DbAggregate(TypeUsage resultType, DbExpressionList arguments) { Debug.Assert(resultType != null, "DbAggregate.ResultType cannot be null"); Debug.Assert(arguments != null, "DbAggregate.Arguments cannot be null"); Debug.Assert(arguments.Count == 1, "DbAggregate requires a single argument"); this._type = resultType; this._args = arguments; } ////// Gets the result type of this aggregate /// public TypeUsage ResultType { get { return _type; } } ////// Gets the list of expressions that define the arguments to the aggregate. /// public IListArguments { get { return _args; } } } /// /// The aggregate type that corresponds to exposing the collection of elements that comprise a group /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Db")] public sealed class DbGroupAggregate : DbAggregate { internal DbGroupAggregate(TypeUsage resultType, DbExpressionList arguments) : base(resultType, arguments) { } } ////// The aggregate type that corresponds to the invocation of an aggregate function. /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Db")] public sealed class DbFunctionAggregate : DbAggregate { private bool _distinct; EdmFunction _aggregateFunction; internal DbFunctionAggregate(TypeUsage resultType, DbExpressionList arguments, EdmFunction function, bool isDistinct) : base(resultType, arguments) { Debug.Assert(function != null, "DbFunctionAggregate.Function cannot be null"); _aggregateFunction = function; _distinct = isDistinct; } ////// Gets a value indicating whether the aggregate function is applied in a distinct fashion /// public bool Distinct { get { return _distinct; } } ////// Gets the method metadata that specifies the aggregate function to invoke. /// public EdmFunction Function { get { return _aggregateFunction; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SafeProcessHandle.cs
- MailAddressCollection.cs
- HScrollBar.cs
- TokenBasedSet.cs
- ReadOnlyDictionary.cs
- Simplifier.cs
- MonthChangedEventArgs.cs
- WebBrowser.cs
- HttpRequestBase.cs
- PropertyTabChangedEvent.cs
- DbParameterHelper.cs
- xsdvalidator.cs
- ProxyGenerationError.cs
- SymmetricCryptoHandle.cs
- WSDualHttpBindingElement.cs
- TransactionChannelFactory.cs
- SetIterators.cs
- ObjectItemCollection.cs
- UIElementCollection.cs
- State.cs
- DataException.cs
- ExtendedProtectionPolicyElement.cs
- ImageButton.cs
- MultiTargetingUtil.cs
- GroupedContextMenuStrip.cs
- X509Certificate.cs
- SequenceQuery.cs
- MatrixCamera.cs
- NetSectionGroup.cs
- ClientUrlResolverWrapper.cs
- CodeDefaultValueExpression.cs
- DataSourceControl.cs
- MarshalByRefObject.cs
- SafePointer.cs
- DataControlPagerLinkButton.cs
- CriticalFinalizerObject.cs
- TrackPoint.cs
- ExtendedPropertyCollection.cs
- X509UI.cs
- MessageQueuePermission.cs
- ThicknessConverter.cs
- DesignerVerbCollection.cs
- ItemCollection.cs
- CodeExporter.cs
- SessionStateUtil.cs
- DrawTreeNodeEventArgs.cs
- GridPattern.cs
- HtmlShimManager.cs
- SQLBytes.cs
- ActivityBuilderXamlWriter.cs
- ScopelessEnumAttribute.cs
- MultilineStringConverter.cs
- DockingAttribute.cs
- TypedAsyncResult.cs
- MetadataHelper.cs
- cache.cs
- DbConnectionPool.cs
- ExpressionBuilder.cs
- documentation.cs
- DatePicker.cs
- StyleSelector.cs
- SqlDataReader.cs
- Misc.cs
- ObjectSet.cs
- SourceChangedEventArgs.cs
- WebPartZoneBaseDesigner.cs
- ConnectorEditor.cs
- PathSegment.cs
- PathGradientBrush.cs
- SwitchCase.cs
- TypedTableGenerator.cs
- PeerContact.cs
- TableProviderWrapper.cs
- ProxyWebPartManager.cs
- BamlMapTable.cs
- SelectionWordBreaker.cs
- TransportConfigurationTypeElementCollection.cs
- ping.cs
- ProcessHostServerConfig.cs
- ExecutionContext.cs
- TextPenaltyModule.cs
- ListParaClient.cs
- ZipIOExtraFieldPaddingElement.cs
- NavigationService.cs
- EntityWrapperFactory.cs
- TableHeaderCell.cs
- WSFederationHttpBindingElement.cs
- ManipulationLogic.cs
- ZipIOLocalFileBlock.cs
- SQLByte.cs
- ExitEventArgs.cs
- LookupNode.cs
- ProgressBar.cs
- MSAAEventDispatcher.cs
- TextBox.cs
- SqlIdentifier.cs
- CLSCompliantAttribute.cs
- InputLanguageProfileNotifySink.cs
- DbDataSourceEnumerator.cs
- CategoryNameCollection.cs