Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Extensions / UI / WebControls / LinqDataSourceHelper.cs / 1305376 / 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
- __TransparentProxy.cs
- EventBuilder.cs
- BitmapEffectInput.cs
- LabelEditEvent.cs
- CodeAccessPermission.cs
- ImageCodecInfo.cs
- SafePointer.cs
- BidOverLoads.cs
- AutomationElement.cs
- Object.cs
- LookupNode.cs
- EntityDataSourceQueryBuilder.cs
- Predicate.cs
- HotSpot.cs
- Expression.cs
- XmlValidatingReader.cs
- PointLightBase.cs
- ACL.cs
- WebPartVerbsEventArgs.cs
- RegexMatchCollection.cs
- ByteAnimation.cs
- BrowserDefinitionCollection.cs
- DBConcurrencyException.cs
- KeyValueInternalCollection.cs
- DrawingVisual.cs
- DataBindingCollection.cs
- CheckoutException.cs
- ObjectQueryExecutionPlan.cs
- XPathBinder.cs
- RelationshipType.cs
- EventLogQuery.cs
- Attributes.cs
- ExtendedPropertyCollection.cs
- DataGridViewComboBoxCell.cs
- _TLSstream.cs
- WebPartManagerInternals.cs
- WebPartUserCapability.cs
- XmlHelper.cs
- WebBrowserNavigatedEventHandler.cs
- Peer.cs
- SpotLight.cs
- ColumnBinding.cs
- WorkflowServiceHost.cs
- BaseProcessProtocolHandler.cs
- CollectionChangedEventManager.cs
- KeyEventArgs.cs
- WizardPanelChangingEventArgs.cs
- OlePropertyStructs.cs
- SafeTimerHandle.cs
- RawMouseInputReport.cs
- ApplicationInfo.cs
- Bidi.cs
- latinshape.cs
- SplineKeyFrames.cs
- EdmEntityTypeAttribute.cs
- GregorianCalendar.cs
- CAGDesigner.cs
- OdbcConnectionStringbuilder.cs
- XmlSchemaExternal.cs
- DirectoryGroupQuery.cs
- BooleanToVisibilityConverter.cs
- PageSettings.cs
- Literal.cs
- WebControlAdapter.cs
- SettingsPropertyValueCollection.cs
- DisposableCollectionWrapper.cs
- Vector3D.cs
- LayoutTable.cs
- EntityDataSourceEntityTypeFilterConverter.cs
- DataRelationPropertyDescriptor.cs
- ItemDragEvent.cs
- ReachNamespaceInfo.cs
- ExpressionLink.cs
- SvcMapFileSerializer.cs
- Deserializer.cs
- SoapFault.cs
- FunctionNode.cs
- TextLineBreak.cs
- SafeViewOfFileHandle.cs
- InkCanvasSelectionAdorner.cs
- SpellCheck.cs
- WaitForChangedResult.cs
- RequestCacheValidator.cs
- DynamicRendererThreadManager.cs
- TimeSpan.cs
- DataIdProcessor.cs
- IisTraceWebEventProvider.cs
- SessionPageStateSection.cs
- HttpCachePolicy.cs
- UIElement.cs
- PropertyChangeTracker.cs
- SpecialNameAttribute.cs
- WindowsFormsSynchronizationContext.cs
- FaultBookmark.cs
- TraceSection.cs
- ColorConvertedBitmap.cs
- DataListItem.cs
- DataGridClipboardCellContent.cs
- InternalControlCollection.cs
- LinqDataSourceUpdateEventArgs.cs