Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / ndp / fx / src / DataSet / System / Data / EnumerableRowCollectionExtensions.cs / 1 / 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. //------------------------------------------------------------------------------ // // 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
- Events.cs
- Triplet.cs
- ServiceMemoryGates.cs
- PenThreadWorker.cs
- CopyOnWriteList.cs
- _OverlappedAsyncResult.cs
- InvalidComObjectException.cs
- DurationConverter.cs
- PeerEndPoint.cs
- InternalConfigSettingsFactory.cs
- ColorMap.cs
- FreezableOperations.cs
- KeyedHashAlgorithm.cs
- FontNamesConverter.cs
- ExtensibleClassFactory.cs
- SharedPerformanceCounter.cs
- TextServicesLoader.cs
- OleDbConnection.cs
- PagerSettings.cs
- ACE.cs
- UnsafeNativeMethods.cs
- ParagraphResult.cs
- AbstractDataSvcMapFileLoader.cs
- ProtectedConfiguration.cs
- ComponentSerializationService.cs
- Inflater.cs
- TextFormatterHost.cs
- Cursor.cs
- DataGridViewCellFormattingEventArgs.cs
- HyperLinkStyle.cs
- TemplateContent.cs
- ListControl.cs
- IndicShape.cs
- X509Extension.cs
- SymbolPair.cs
- DecoderFallbackWithFailureFlag.cs
- TypeDelegator.cs
- Compilation.cs
- UseAttributeSetsAction.cs
- WebPartEventArgs.cs
- XmlSchemaInfo.cs
- SqlClientFactory.cs
- PermissionSetEnumerator.cs
- ContextMenuStrip.cs
- ListBindableAttribute.cs
- TypeUtil.cs
- PasswordTextNavigator.cs
- StyleSelector.cs
- CodeNamespaceImportCollection.cs
- InternalConfigRoot.cs
- TextEditorParagraphs.cs
- UInt32.cs
- IxmlLineInfo.cs
- ImageSourceConverter.cs
- UnionCqlBlock.cs
- ConfigXmlCDataSection.cs
- xdrvalidator.cs
- ChangeToolStripParentVerb.cs
- ActivityDesignerHelper.cs
- XmlSchemaSimpleContentExtension.cs
- SecurityDocument.cs
- SafeThreadHandle.cs
- Item.cs
- XmlnsDictionary.cs
- DefaultAssemblyResolver.cs
- ClientSettingsSection.cs
- Module.cs
- StateWorkerRequest.cs
- SuppressMergeCheckAttribute.cs
- ReadOnlyDictionary.cs
- XslCompiledTransform.cs
- InheritanceContextHelper.cs
- SmtpReplyReader.cs
- GridViewRowCollection.cs
- CodeTryCatchFinallyStatement.cs
- XPathConvert.cs
- SmtpFailedRecipientsException.cs
- EventRoute.cs
- TriggerActionCollection.cs
- TextChange.cs
- InvokeSchedule.cs
- GC.cs
- LineInfo.cs
- ListViewSelectEventArgs.cs
- RightNameExpirationInfoPair.cs
- SchemaCollectionCompiler.cs
- ServiceChannelProxy.cs
- controlskin.cs
- Pair.cs
- AsyncSerializedWorker.cs
- ContainerUtilities.cs
- WrappedIUnknown.cs
- x509utils.cs
- AlignmentXValidation.cs
- PingReply.cs
- DocumentViewerBaseAutomationPeer.cs
- SimpleExpression.cs
- TypeDependencyAttribute.cs
- UdpAnnouncementEndpoint.cs
- ObjectPropertyMapping.cs