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
- UiaCoreApi.cs
- MessageBox.cs
- BlurBitmapEffect.cs
- Color.cs
- Point4DValueSerializer.cs
- StringBuilder.cs
- ListViewItemMouseHoverEvent.cs
- RadioButton.cs
- XPathMultyIterator.cs
- DataListItemEventArgs.cs
- UriTemplateEquivalenceComparer.cs
- PrintDialog.cs
- DataGrid.cs
- PeerNameResolver.cs
- HwndSourceParameters.cs
- BindingSourceDesigner.cs
- SplineKeyFrames.cs
- CryptoStream.cs
- FederatedMessageSecurityOverHttp.cs
- DataBindingHandlerAttribute.cs
- XsltConvert.cs
- IRCollection.cs
- BaseParaClient.cs
- ScriptingJsonSerializationSection.cs
- ProfilePropertyNameValidator.cs
- RegexCompilationInfo.cs
- ScriptingScriptResourceHandlerSection.cs
- CacheChildrenQuery.cs
- VisualStyleRenderer.cs
- ListBase.cs
- UInt32.cs
- SequenceFullException.cs
- ColumnCollectionEditor.cs
- WebFaultClientMessageInspector.cs
- ListBoxAutomationPeer.cs
- AlternationConverter.cs
- XmlUTF8TextWriter.cs
- SemanticResultValue.cs
- BrushMappingModeValidation.cs
- CultureInfo.cs
- ObjectQueryExecutionPlan.cs
- BaseHashHelper.cs
- TextParagraphCache.cs
- OracleLob.cs
- SamlAttributeStatement.cs
- HtmlAnchor.cs
- SHA384Managed.cs
- BrushConverter.cs
- Calendar.cs
- UseAttributeSetsAction.cs
- MaskedTextProvider.cs
- KeyPullup.cs
- ReturnType.cs
- X509Utils.cs
- XmlSerializationReader.cs
- MarkupExtensionParser.cs
- OleCmdHelper.cs
- IndexedWhereQueryOperator.cs
- DataGridViewButtonCell.cs
- Normalization.cs
- TextParentUndoUnit.cs
- XPathDescendantIterator.cs
- StreamUpdate.cs
- MaskPropertyEditor.cs
- TransformConverter.cs
- ChangePassword.cs
- ConfigurationLockCollection.cs
- validationstate.cs
- ComponentEvent.cs
- MeasureItemEvent.cs
- SafeHandles.cs
- ParserHooks.cs
- PostBackOptions.cs
- FolderBrowserDialogDesigner.cs
- AssemblyHash.cs
- HtmlGenericControl.cs
- hebrewshape.cs
- FillErrorEventArgs.cs
- CompatibleIComparer.cs
- GPPOINT.cs
- UrlMappingCollection.cs
- RuntimeEnvironment.cs
- UIElement.cs
- MailMessage.cs
- XmlSortKeyAccumulator.cs
- IChannel.cs
- LineProperties.cs
- BitmapSourceSafeMILHandle.cs
- CustomCredentialPolicy.cs
- KeyedHashAlgorithm.cs
- AssemblyBuilder.cs
- HierarchicalDataBoundControl.cs
- TimeSpanStorage.cs
- SqlServices.cs
- XmlName.cs
- NativeMethods.cs
- RuntimeConfig.cs
- MimeReturn.cs
- ListControlDataBindingHandler.cs
- CorrelationResolver.cs