Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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;
///
/// [To be supplied.]
///
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
// 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;
///
/// [To be supplied.]
///
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
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- UpdatePanelTrigger.cs
- ManagedWndProcTracker.cs
- Funcletizer.cs
- DataGridViewElement.cs
- ClockController.cs
- DbProviderFactories.cs
- HttpProfileBase.cs
- SpeechUI.cs
- _DisconnectOverlappedAsyncResult.cs
- InternalBufferOverflowException.cs
- PackWebRequest.cs
- EditorPartCollection.cs
- ButtonColumn.cs
- OLEDB_Enum.cs
- ScriptComponentDescriptor.cs
- BCLDebug.cs
- CallbackDebugElement.cs
- QilGeneratorEnv.cs
- OptionUsage.cs
- WrapPanel.cs
- ListViewItemEventArgs.cs
- EntityModelBuildProvider.cs
- ManagementOperationWatcher.cs
- CounterCreationData.cs
- IndexOutOfRangeException.cs
- ColorConverter.cs
- SimpleWorkerRequest.cs
- WebPartVerb.cs
- CheckoutException.cs
- BoolExpr.cs
- StreamAsIStream.cs
- XmlNamespaceMappingCollection.cs
- ISAPIRuntime.cs
- SQLInt64.cs
- UnauthorizedWebPart.cs
- CodeDirectiveCollection.cs
- HtmlTable.cs
- PropertyPathConverter.cs
- RichTextBox.cs
- InvalidProgramException.cs
- WindowHideOrCloseTracker.cs
- Logging.cs
- Listener.cs
- ProcessThreadCollection.cs
- HttpVersion.cs
- XmlReflectionMember.cs
- SiteOfOriginContainer.cs
- userdatakeys.cs
- ImmComposition.cs
- TypeNameConverter.cs
- KeyPullup.cs
- ScriptMethodAttribute.cs
- OleDbCommand.cs
- unsafenativemethodsother.cs
- baseaxisquery.cs
- XmlElementAttribute.cs
- DataGridViewComboBoxCell.cs
- TemplateBaseAction.cs
- AvTraceFormat.cs
- TimeSpanValidatorAttribute.cs
- PerfProviderCollection.cs
- AnonymousIdentificationModule.cs
- BrowserInteropHelper.cs
- XPathPatternBuilder.cs
- IBuiltInEvidence.cs
- WebHeaderCollection.cs
- SqlReferenceCollection.cs
- TextTreeTextNode.cs
- SqlStream.cs
- TimerElapsedEvenArgs.cs
- SocketElement.cs
- PagerSettings.cs
- ContainerTracking.cs
- CaseStatement.cs
- mda.cs
- XmlEncodedRawTextWriter.cs
- RijndaelManaged.cs
- UserControlParser.cs
- EllipseGeometry.cs
- OdbcCommand.cs
- CmsInterop.cs
- XamlBuildTaskServices.cs
- TreeWalkHelper.cs
- QilName.cs
- SupportsEventValidationAttribute.cs
- ResourcesBuildProvider.cs
- cookieexception.cs
- UnionCodeGroup.cs
- SoapAttributeAttribute.cs
- HelpProvider.cs
- DataSysAttribute.cs
- WindowsFormsSynchronizationContext.cs
- ListViewInsertEventArgs.cs
- SerialErrors.cs
- Optimizer.cs
- SymmetricAlgorithm.cs
- ObjectPersistData.cs
- TimeoutValidationAttribute.cs
- QfeChecker.cs
- UnauthorizedWebPart.cs