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
- ErrorActivity.cs
- ClientSettingsProvider.cs
- DataTemplateSelector.cs
- OutgoingWebResponseContext.cs
- HtmlButton.cs
- DbParameterCollection.cs
- ConversionContext.cs
- ComboBox.cs
- WaitForChangedResult.cs
- CompilerInfo.cs
- SqlGenerator.cs
- LinkConverter.cs
- EdmComplexPropertyAttribute.cs
- Token.cs
- MD5.cs
- HttpHostedTransportConfiguration.cs
- XmlWriter.cs
- SecurityTokenTypes.cs
- SqlException.cs
- SizeChangedInfo.cs
- XmlEnumAttribute.cs
- DataControlExtensions.cs
- ButtonChrome.cs
- sqlmetadatafactory.cs
- ClassHandlersStore.cs
- ProcessHostConfigUtils.cs
- ImageClickEventArgs.cs
- AbandonedMutexException.cs
- ToolboxCategoryItems.cs
- VirtualDirectoryMapping.cs
- AttributeUsageAttribute.cs
- Keywords.cs
- IRCollection.cs
- EntityDataSourceSelectingEventArgs.cs
- FactorySettingsElement.cs
- SessionSwitchEventArgs.cs
- TextEffectResolver.cs
- ExpanderAutomationPeer.cs
- PublisherIdentityPermission.cs
- NamespaceCollection.cs
- DrawingAttributesDefaultValueFactory.cs
- SqlNotificationEventArgs.cs
- Italic.cs
- ViewValidator.cs
- TraceLevelStore.cs
- GorillaCodec.cs
- SqlFactory.cs
- HwndHostAutomationPeer.cs
- StringArrayConverter.cs
- SchemaCreator.cs
- PersonalizationAdministration.cs
- EnumUnknown.cs
- RangeContentEnumerator.cs
- RowTypePropertyElement.cs
- RegexFCD.cs
- SectionInformation.cs
- StringDictionary.cs
- NameNode.cs
- DoubleCollection.cs
- ListDataHelper.cs
- PlainXmlWriter.cs
- Decimal.cs
- QueryExpr.cs
- MachineKeySection.cs
- SystemMulticastIPAddressInformation.cs
- DataColumnPropertyDescriptor.cs
- ContentValidator.cs
- dbdatarecord.cs
- LineSegment.cs
- RenamedEventArgs.cs
- QilSortKey.cs
- NativeMethods.cs
- ComplexObject.cs
- ColumnTypeConverter.cs
- SettingsBase.cs
- ClientCredentials.cs
- UInt64.cs
- DataSysAttribute.cs
- HtmlSelect.cs
- NativeObjectSecurity.cs
- WindowsClaimSet.cs
- BreakRecordTable.cs
- SafeProcessHandle.cs
- IArgumentProvider.cs
- WebEvents.cs
- ResourceDescriptionAttribute.cs
- Transform3D.cs
- DataGridTable.cs
- FastEncoder.cs
- XmlArrayItemAttributes.cs
- StackOverflowException.cs
- AuthenticatedStream.cs
- Crc32.cs
- ChannelManager.cs
- DoubleStorage.cs
- DataGridViewRowStateChangedEventArgs.cs
- XmlHierarchyData.cs
- Stacktrace.cs
- OAVariantLib.cs
- ValueCollectionParameterReader.cs