Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataSet / System / Data / EnumerableRowCollectionExtensions.cs / 1305376 / EnumerableRowCollectionExtensions.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //----------------------------------------------------------------------------- using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Globalization; using System.Diagnostics; namespace System.Data { ////// This static class defines the extension methods that add LINQ operator functionality /// within IEnumerableDT and IOrderedEnumerableDT. /// public static class EnumerableRowCollectionExtensions { ////// LINQ's Where operator for generic EnumerableRowCollection. /// public static EnumerableRowCollectionWhere ( this EnumerableRowCollection source, Func predicate) { EnumerableRowCollection edt = new EnumerableRowCollection (source, Enumerable.Where (source, predicate), null); //copy constructor edt.AddPredicate(predicate); return edt; } /// /// LINQ's OrderBy operator for generic EnumerableRowCollection. /// public static OrderedEnumerableRowCollectionOrderBy ( this EnumerableRowCollection source, Func keySelector) { IEnumerable ie = Enumerable.OrderBy (source, keySelector); OrderedEnumerableRowCollection edt = new OrderedEnumerableRowCollection (source, ie); edt.AddSortExpression(keySelector, false, true); return edt; } /// /// LINQ's OrderBy operator for generic EnumerableRowCollection. /// public static OrderedEnumerableRowCollectionOrderBy ( this EnumerableRowCollection source, Func keySelector, IComparer comparer) { IEnumerable ie = Enumerable.OrderBy (source, keySelector, comparer); OrderedEnumerableRowCollection edt = new OrderedEnumerableRowCollection (source, ie); edt.AddSortExpression(keySelector, comparer, false, true); return edt; } /// /// LINQ's OrderByDescending operator for generic EnumerableRowCollection. /// public static OrderedEnumerableRowCollectionOrderByDescending ( this EnumerableRowCollection source, Func keySelector) { IEnumerable ie = Enumerable.OrderByDescending (source, keySelector); OrderedEnumerableRowCollection edt = new OrderedEnumerableRowCollection (source, ie); edt.AddSortExpression(keySelector, true, true); return edt; } /// /// LINQ's OrderByDescending operator for generic EnumerableRowCollection. /// public static OrderedEnumerableRowCollectionOrderByDescending ( this EnumerableRowCollection source, Func keySelector, IComparer comparer) { IEnumerable ie = Enumerable.OrderByDescending (source, keySelector, comparer); OrderedEnumerableRowCollection edt = new OrderedEnumerableRowCollection (source, ie); edt.AddSortExpression(keySelector, comparer, true, true); return edt; } /// /// LINQ's ThenBy operator for generic EnumerableRowCollection. /// public static OrderedEnumerableRowCollectionThenBy ( this OrderedEnumerableRowCollection source, Func keySelector) { IEnumerable ie = Enumerable.ThenBy ((IOrderedEnumerable )source.EnumerableRows, keySelector); OrderedEnumerableRowCollection edt = new OrderedEnumerableRowCollection ((EnumerableRowCollection )source, ie); edt.AddSortExpression(keySelector, /*isDesc*/ false, /*isOrderBy*/ false); return edt; } /// /// LINQ's ThenBy operator for generic EnumerableRowCollection. /// public static OrderedEnumerableRowCollectionThenBy ( this OrderedEnumerableRowCollection source, Func keySelector, IComparer comparer) { IEnumerable ie = Enumerable.ThenBy ((IOrderedEnumerable )source.EnumerableRows, keySelector, comparer); OrderedEnumerableRowCollection edt = new OrderedEnumerableRowCollection ((EnumerableRowCollection )source, ie); edt.AddSortExpression(keySelector, comparer, false, false); return edt; } /// /// LINQ's ThenByDescending operator for generic EnumerableRowCollection. /// public static OrderedEnumerableRowCollectionThenByDescending ( this OrderedEnumerableRowCollection source, Func keySelector) { IEnumerable ie = Enumerable.ThenByDescending ((IOrderedEnumerable )source.EnumerableRows, keySelector); OrderedEnumerableRowCollection edt = new OrderedEnumerableRowCollection ((EnumerableRowCollection )source, ie); edt.AddSortExpression(keySelector, /*desc*/ true, false); return edt; } /// /// LINQ's ThenByDescending operator for generic EnumerableRowCollection. /// public static OrderedEnumerableRowCollectionThenByDescending ( this OrderedEnumerableRowCollection source, Func keySelector, IComparer comparer) { IEnumerable ie = Enumerable.ThenByDescending ((IOrderedEnumerable )source.EnumerableRows, keySelector, comparer); OrderedEnumerableRowCollection edt = new OrderedEnumerableRowCollection ((EnumerableRowCollection )source, ie); edt.AddSortExpression(keySelector, comparer, true, false); return edt; } /// /// Executes a Select (Projection) on EnumerableDataTable. If the selector returns a different /// type than the type of rows, then AsLinqDataView is disabled, and the returning EnumerableDataTable /// represents an enumerable over the LINQ Query. /// public static EnumerableRowCollectionSelect( this EnumerableRowCollection source, Func selector) { //Anonymous type or some other type //The only thing that matters from this point on is _enumerableRows IEnumerable typedEnumerable = Enumerable.Select(source, selector); // Dont need predicates or sort expression from this point on since we know // AsLinqDataView is disabled. return new EnumerableRowCollection (((object)source) as EnumerableRowCollection, typedEnumerable, ((object)selector) as Func); } ////// Casts an EnumerableDataTable_TSource into EnumerableDataTable_TResult /// public static EnumerableRowCollectionCast (this EnumerableRowCollection source) { // Since Cast does not have the signature Cast_T_R(..) this call is routed // through the non-generic base class EnumerableDataTable if ((null != source) && source.ElementType.Equals(typeof(TResult))) { return (EnumerableRowCollection )(object)source; } else { //Anonymous type or some other type //The only thing that matters from this point on is _enumerableRows IEnumerable typedEnumerable = Enumerable.Cast (source); EnumerableRowCollection newEdt = new EnumerableRowCollection ( typedEnumerable, typeof(TResult).IsAssignableFrom(source.ElementType) && typeof(DataRow).IsAssignableFrom(typeof(TResult)), source.Table); return newEdt; } } } //end class } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ValidatingReaderNodeData.cs
- SByteStorage.cs
- xdrvalidator.cs
- DeferredReference.cs
- PostBackOptions.cs
- UriSection.cs
- TimerElapsedEvenArgs.cs
- SimplePropertyEntry.cs
- TextServicesPropertyRanges.cs
- StatusStrip.cs
- Currency.cs
- WebResponse.cs
- CommandValueSerializer.cs
- DataObjectMethodAttribute.cs
- DoubleUtil.cs
- diagnosticsswitches.cs
- DeferrableContent.cs
- ContextStaticAttribute.cs
- NetNamedPipeSecurityElement.cs
- ProfileSection.cs
- DeadCharTextComposition.cs
- FixedFlowMap.cs
- Tag.cs
- ExceptionHandlerDesigner.cs
- Enum.cs
- PrimitiveSchema.cs
- StoreItemCollection.Loader.cs
- BinaryReader.cs
- OutgoingWebRequestContext.cs
- MessageBox.cs
- EncoderBestFitFallback.cs
- ContentElement.cs
- TextElementEnumerator.cs
- AncillaryOps.cs
- CharacterBuffer.cs
- DateTimeConverter.cs
- WaitingCursor.cs
- ITreeGenerator.cs
- CheckBoxBaseAdapter.cs
- GridEntry.cs
- ImageCodecInfo.cs
- NullableBoolConverter.cs
- NodeLabelEditEvent.cs
- ExecutionContext.cs
- ProtocolsSection.cs
- OpenFileDialog.cs
- StreamGeometry.cs
- Internal.cs
- TextBounds.cs
- BooleanFacetDescriptionElement.cs
- SecureEnvironment.cs
- Model3D.cs
- XmlDocumentType.cs
- Constants.cs
- ObjectItemNoOpAssemblyLoader.cs
- FusionWrap.cs
- IdentitySection.cs
- DbProviderFactory.cs
- OdbcParameter.cs
- DurationConverter.cs
- LinkDescriptor.cs
- DtrList.cs
- ControlBuilderAttribute.cs
- TextContainerChangedEventArgs.cs
- TableParaClient.cs
- IListConverters.cs
- UserNamePasswordValidator.cs
- PolicyException.cs
- WebPartChrome.cs
- _Semaphore.cs
- Rules.cs
- TrustLevel.cs
- SqlBooleanizer.cs
- TrackingStringDictionary.cs
- InfoCardTrace.cs
- ToolBarTray.cs
- ImageButton.cs
- XPathSingletonIterator.cs
- FixedSOMFixedBlock.cs
- OrderedDictionary.cs
- StaticExtension.cs
- GridViewDeletedEventArgs.cs
- Point4DConverter.cs
- HScrollBar.cs
- XmlSchemaFacet.cs
- SizeConverter.cs
- WriteableBitmap.cs
- WebPartDescriptionCollection.cs
- DataListItem.cs
- CacheSection.cs
- SecurityPermission.cs
- ProviderCollection.cs
- DocumentOrderComparer.cs
- ApplicationTrust.cs
- ClientTargetSection.cs
- MetadataCacheItem.cs
- XamlSerializationHelper.cs
- SystemColors.cs
- __Error.cs
- UpdateTranslator.cs