Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / Data / System / Data / DataKey.cs / 1 / DataKey.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //[....] //----------------------------------------------------------------------------- namespace System.Data { using System; using System.Diagnostics; using System.ComponentModel; internal struct DataKey { internal const Int32 COLUMN = unchecked((int)0x0000FFFF); internal const Int32 DESCENDING = unchecked((int)0x80000000); private const int maxColumns = 32; private readonly DataColumn[] columns; ////// internal DataKey(DataColumn[] columns, bool copyColumns) { if (columns == null) throw ExceptionBuilder.ArgumentNull("columns"); if (columns.Length == 0) throw ExceptionBuilder.KeyNoColumns(); if (columns.Length > maxColumns) throw ExceptionBuilder.KeyTooManyColumns(maxColumns); for (int i = 0; i < columns.Length; i++) { if (columns[i] == null) throw ExceptionBuilder.ArgumentNull("column"); } for (int i = 0; i < columns.Length; i++) { for (int j = 0; j < i; j++) { if (columns[i] == columns[j]) { throw ExceptionBuilder.KeyDuplicateColumns(columns[i].ColumnName); } } } if (copyColumns) { // Need to make a copy of all columns this.columns = new DataColumn [columns.Length]; for (int i = 0; i < columns.Length; i++) this.columns[i] = columns[i]; } else { // take ownership of the array passed in this.columns = columns; } CheckState(); } internal DataColumn[] ColumnsReference { get { return columns; } } internal bool HasValue { get { return (null != columns); } } internal DataTable Table { get { return columns[0].Table; } } internal void CheckState() { DataTable table = columns[0].Table; if (table == null) { throw ExceptionBuilder.ColumnNotInAnyTable(); } for (int i = 1; i < columns.Length; i++) { if (columns[i].Table == null) { throw ExceptionBuilder.ColumnNotInAnyTable(); } if (columns[i].Table != table) { throw ExceptionBuilder.KeyTableMismatch(); } } } internal bool ColumnsEqual(DataKey key) { //check to see if this.columns && key2's columns are equal regardless of order DataColumn[] column1=columns; DataColumn[] column2=((DataKey)key).columns; if (column1 == column2) { return true; } else if (column1 == null || column2 == null) { return false; } else if (column1.Length != column2.Length) { return false; } else { int i, j; for (i=0; i[To be supplied.] ///
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ClientSideQueueItem.cs
- OdbcTransaction.cs
- NumberFormatter.cs
- SecurityToken.cs
- StretchValidation.cs
- ClaimTypes.cs
- odbcmetadatacolumnnames.cs
- DoubleLinkList.cs
- TemplateBamlRecordReader.cs
- BuilderInfo.cs
- OperationFormatStyle.cs
- MessageAction.cs
- RequestCachePolicy.cs
- TypeUnloadedException.cs
- DataGridViewRowConverter.cs
- PrintDialog.cs
- BooleanToVisibilityConverter.cs
- bindurihelper.cs
- RelOps.cs
- CacheRequest.cs
- SqlDataAdapter.cs
- FormViewRow.cs
- RelationshipManager.cs
- Convert.cs
- StreamResourceInfo.cs
- _ContextAwareResult.cs
- DirectoryObjectSecurity.cs
- ReadWriteSpinLock.cs
- BamlResourceContent.cs
- FillBehavior.cs
- ConsoleCancelEventArgs.cs
- ResourceDescriptionAttribute.cs
- CultureSpecificStringDictionary.cs
- _NestedSingleAsyncResult.cs
- XmlDocumentType.cs
- TypeKeyValue.cs
- TypeFieldSchema.cs
- ButtonColumn.cs
- AudioLevelUpdatedEventArgs.cs
- ConsoleEntryPoint.cs
- Property.cs
- SettingsProperty.cs
- SqlParameterizer.cs
- SettingsPropertyIsReadOnlyException.cs
- FrameworkContentElement.cs
- MultipleViewProviderWrapper.cs
- ByteAnimationUsingKeyFrames.cs
- RepeatInfo.cs
- ApplicationDirectoryMembershipCondition.cs
- SingleObjectCollection.cs
- SignatureDescription.cs
- ChannelEndpointElement.cs
- ByteKeyFrameCollection.cs
- ListParaClient.cs
- WebPartConnectionsConfigureVerb.cs
- RoleManagerSection.cs
- MatrixUtil.cs
- KeysConverter.cs
- _HeaderInfoTable.cs
- DesignerCategoryAttribute.cs
- ForceCopyBuildProvider.cs
- ScrollBarAutomationPeer.cs
- ResolvedKeyFrameEntry.cs
- ProcessProtocolHandler.cs
- GeneratedContractType.cs
- ContextQuery.cs
- AutoSizeComboBox.cs
- RoleServiceManager.cs
- ArgIterator.cs
- StringUtil.cs
- StackOverflowException.cs
- TextTreeRootNode.cs
- EdgeModeValidation.cs
- StrongNameIdentityPermission.cs
- webproxy.cs
- GridViewCellAutomationPeer.cs
- FunctionNode.cs
- AsyncContentLoadedEventArgs.cs
- HttpConfigurationSystem.cs
- MenuCommand.cs
- SmiMetaData.cs
- SByte.cs
- SafeUserTokenHandle.cs
- BuildProvider.cs
- path.cs
- FactoryGenerator.cs
- AppDomainUnloadedException.cs
- StylusTouchDevice.cs
- PrivateFontCollection.cs
- X509WindowsSecurityToken.cs
- ConfigXmlDocument.cs
- QilXmlReader.cs
- ToolboxItemCollection.cs
- SystemKeyConverter.cs
- ReceiveActivityDesigner.cs
- XmlILStorageConverter.cs
- InkPresenter.cs
- ActionFrame.cs
- FactoryId.cs
- Header.cs