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
- SqlDataSourceStatusEventArgs.cs
- UIHelper.cs
- EncoderReplacementFallback.cs
- UIHelper.cs
- CodeValidator.cs
- COM2ExtendedBrowsingHandler.cs
- SafeProcessHandle.cs
- Point3DAnimation.cs
- DataException.cs
- WebControlsSection.cs
- WmiPutTraceRecord.cs
- EntityCommandDefinition.cs
- ImageMap.cs
- ProcessHostFactoryHelper.cs
- SerializationObjectManager.cs
- SharedPersonalizationStateInfo.cs
- DLinqColumnProvider.cs
- ResourceCodeDomSerializer.cs
- CqlBlock.cs
- FontSizeConverter.cs
- returneventsaver.cs
- CalendarAutomationPeer.cs
- DataGridViewRow.cs
- ComboBoxItem.cs
- SystemIPGlobalStatistics.cs
- QueryTask.cs
- LayoutEvent.cs
- GridViewEditEventArgs.cs
- KernelTypeValidation.cs
- BoundColumn.cs
- MetadataArtifactLoaderComposite.cs
- TextClipboardData.cs
- XmlSchemaComplexContent.cs
- TypeBinaryExpression.cs
- ExpressionList.cs
- EventSinkHelperWriter.cs
- SqlWorkflowInstanceStoreLock.cs
- SingleStorage.cs
- ReferencedAssemblyResolver.cs
- externdll.cs
- SelectionItemPattern.cs
- XmlSerializationGeneratedCode.cs
- ConstraintEnumerator.cs
- XmlRawWriterWrapper.cs
- ExpressionBuilder.cs
- RequestQueue.cs
- MenuAdapter.cs
- BaseTemplateBuildProvider.cs
- SqlConnectionString.cs
- BaseValidator.cs
- XmlKeywords.cs
- JoinGraph.cs
- ToolStripButton.cs
- GenerateTemporaryTargetAssembly.cs
- TypeLoader.cs
- AspNetSynchronizationContext.cs
- FileNotFoundException.cs
- DecoderReplacementFallback.cs
- SQLInt16Storage.cs
- WindowsUpDown.cs
- CollectionBase.cs
- RegionInfo.cs
- QuestionEventArgs.cs
- LinearGradientBrush.cs
- RightsManagementEncryptedStream.cs
- Vector3D.cs
- ContentPosition.cs
- TableRowCollection.cs
- ComEventsMethod.cs
- DiffuseMaterial.cs
- SerializableAttribute.cs
- ClipboardData.cs
- AnnotationResourceCollection.cs
- ControlEvent.cs
- SmiRequestExecutor.cs
- ElementNotAvailableException.cs
- designeractionlistschangedeventargs.cs
- DefaultTraceListener.cs
- WebControlParameterProxy.cs
- DefaultPropertiesToSend.cs
- CodeSubDirectory.cs
- TogglePattern.cs
- DoubleLink.cs
- SapiGrammar.cs
- BitmapPalettes.cs
- RelationshipConverter.cs
- SqlProviderServices.cs
- NullableFloatSumAggregationOperator.cs
- PathTooLongException.cs
- ColumnMapCopier.cs
- figurelength.cs
- UrlMappingsSection.cs
- WebCategoryAttribute.cs
- ListBoxAutomationPeer.cs
- TextCollapsingProperties.cs
- MD5CryptoServiceProvider.cs
- FixUpCollection.cs
- TypeConverterMarkupExtension.cs
- _TimerThread.cs
- Rotation3DAnimationUsingKeyFrames.cs