Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / ndp / fx / src / xsp / System / Web / Extensions / ui / webcontrols / LinqDataSourceHelper.cs / 1 / LinqDataSourceHelper.cs
namespace System.Web.UI.WebControls { using System.Collections; using System.Collections.Generic; internal class LinqDataSourceHelper { public static bool EnumerableContentEquals(IEnumerable enumerableA, IEnumerable enumerableB) { IEnumerator enumeratorA = enumerableA.GetEnumerator(); IEnumerator enumeratorB = enumerableB.GetEnumerator(); while (enumeratorA.MoveNext()) { if (!enumeratorB.MoveNext()) return false; object itemA = enumeratorA.Current; object itemB = enumeratorB.Current; if (itemA == null) { if (itemB != null) return false; } else if (!itemA.Equals(itemB)) return false; } if (enumeratorB.MoveNext()) return false; return true; } public static Type FindGenericEnumerableType(Type type) { // Logic taken from Queryable.AsQueryable which accounts for Array types which are not // generic but implement the generic IEnumerable interface. while ((type != null) && (type != typeof(object)) && (type != typeof(string))) { if (type.IsGenericType && (type.GetGenericTypeDefinition() == typeof(IEnumerable<>))) { return type; } foreach (Type interfaceType in type.GetInterfaces()) { Type genericInterface = FindGenericEnumerableType(interfaceType); if (genericInterface != null) { return genericInterface; } } type = type.BaseType; } return null; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. namespace System.Web.UI.WebControls { using System.Collections; using System.Collections.Generic; internal class LinqDataSourceHelper { public static bool EnumerableContentEquals(IEnumerable enumerableA, IEnumerable enumerableB) { IEnumerator enumeratorA = enumerableA.GetEnumerator(); IEnumerator enumeratorB = enumerableB.GetEnumerator(); while (enumeratorA.MoveNext()) { if (!enumeratorB.MoveNext()) return false; object itemA = enumeratorA.Current; object itemB = enumeratorB.Current; if (itemA == null) { if (itemB != null) return false; } else if (!itemA.Equals(itemB)) return false; } if (enumeratorB.MoveNext()) return false; return true; } public static Type FindGenericEnumerableType(Type type) { // Logic taken from Queryable.AsQueryable which accounts for Array types which are not // generic but implement the generic IEnumerable interface. while ((type != null) && (type != typeof(object)) && (type != typeof(string))) { if (type.IsGenericType && (type.GetGenericTypeDefinition() == typeof(IEnumerable<>))) { return type; } foreach (Type interfaceType in type.GetInterfaces()) { Type genericInterface = FindGenericEnumerableType(interfaceType); if (genericInterface != null) { return genericInterface; } } type = type.BaseType; } return null; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SaveFileDialog.cs
- XamlHostingSection.cs
- LogAppendAsyncResult.cs
- ZipIOBlockManager.cs
- NativeWrapper.cs
- DecimalConverter.cs
- PtsHost.cs
- CheckBoxField.cs
- RtfControlWordInfo.cs
- DynamicMethod.cs
- SecurityContextSecurityTokenResolver.cs
- HScrollProperties.cs
- PropertyPathConverter.cs
- LayoutEvent.cs
- DiscoveryViaBehavior.cs
- TCPListener.cs
- SchemaNamespaceManager.cs
- AutoResizedEvent.cs
- HtmlEncodedRawTextWriter.cs
- QueryAccessibilityHelpEvent.cs
- CommandBinding.cs
- CompositeScriptReferenceEventArgs.cs
- NavigationWindow.cs
- DataServiceRequestException.cs
- ModifierKeysValueSerializer.cs
- SystemWebSectionGroup.cs
- Vector3DAnimation.cs
- NavigatorInput.cs
- PropertyGridView.cs
- XmlCharCheckingWriter.cs
- ValidatingReaderNodeData.cs
- CornerRadius.cs
- UniqueContractNameValidationBehavior.cs
- DateTimeOffset.cs
- FixedStringLookup.cs
- UserControlCodeDomTreeGenerator.cs
- MruCache.cs
- LookupTables.cs
- XmlQueryTypeFactory.cs
- Panel.cs
- WebPartAddingEventArgs.cs
- ToolStripDesignerAvailabilityAttribute.cs
- AuthenticationService.cs
- BatchWriter.cs
- PngBitmapEncoder.cs
- path.cs
- WindowsTitleBar.cs
- DataSourceListEditor.cs
- PieceDirectory.cs
- SystemInfo.cs
- ImageList.cs
- HMACMD5.cs
- TextBlockAutomationPeer.cs
- DefaultBinder.cs
- Listen.cs
- HttpApplicationFactory.cs
- GlyphRunDrawing.cs
- SqlTriggerAttribute.cs
- SharedPersonalizationStateInfo.cs
- StrokeFIndices.cs
- StatusBarPanelClickEvent.cs
- TrailingSpaceComparer.cs
- ConfigXmlWhitespace.cs
- PropertyPathWorker.cs
- JournalEntry.cs
- Transform3DGroup.cs
- CommentEmitter.cs
- Point3D.cs
- ComponentDispatcher.cs
- TransformConverter.cs
- XmlDigitalSignatureProcessor.cs
- StorageModelBuildProvider.cs
- TemplateParser.cs
- Object.cs
- SwitchCase.cs
- CardSpaceException.cs
- CompiledQueryCacheEntry.cs
- BidOverLoads.cs
- OrderingExpression.cs
- ComponentManagerBroker.cs
- ComponentCodeDomSerializer.cs
- Activator.cs
- CodeTypeReferenceCollection.cs
- WhitespaceRuleReader.cs
- AuthenticationModuleElement.cs
- ItemsControlAutomationPeer.cs
- Sentence.cs
- ParameterCollection.cs
- AspCompat.cs
- TableCell.cs
- SectionInformation.cs
- ExpressionEvaluator.cs
- ModelPropertyCollectionImpl.cs
- SBCSCodePageEncoding.cs
- ContextBase.cs
- OleDbCommandBuilder.cs
- UnsafeNativeMethods.cs
- OdbcEnvironmentHandle.cs
- TranslateTransform.cs
- HebrewCalendar.cs