Code:
/ 4.0 / 4.0 / 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. //------------------------------------------------------------------------------ // // 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
- HTMLTagNameToTypeMapper.cs
- TextElement.cs
- PageTheme.cs
- StringReader.cs
- FixedTextSelectionProcessor.cs
- SystemFonts.cs
- WaitHandle.cs
- SqlRewriteScalarSubqueries.cs
- Size.cs
- CheckedPointers.cs
- SafeNativeMethods.cs
- OrthographicCamera.cs
- DependentTransaction.cs
- ButtonAutomationPeer.cs
- FixedSOMLineCollection.cs
- XmlSchemaInclude.cs
- MonthCalendar.cs
- QueryResultOp.cs
- LingerOption.cs
- InvokeProviderWrapper.cs
- WindowsRichEditRange.cs
- PersonalizationProviderHelper.cs
- LocalFileSettingsProvider.cs
- AstTree.cs
- NodeFunctions.cs
- TypeSystem.cs
- SpellCheck.cs
- cache.cs
- ComboBoxItem.cs
- ToolboxItemCollection.cs
- HttpCookiesSection.cs
- PresentationTraceSources.cs
- PropertyCondition.cs
- CustomCredentialPolicy.cs
- XmlNavigatorFilter.cs
- DebuggerAttributes.cs
- ConfigurationPermission.cs
- DoubleAnimationUsingPath.cs
- ListViewDeleteEventArgs.cs
- CLSCompliantAttribute.cs
- FrameworkElement.cs
- MemberPath.cs
- DataGridViewRowsRemovedEventArgs.cs
- ApplicationDirectoryMembershipCondition.cs
- AuthorizationRuleCollection.cs
- CodeMemberProperty.cs
- ObjectContext.cs
- DataGridViewSortCompareEventArgs.cs
- Gdiplus.cs
- TreeViewHitTestInfo.cs
- ReadingWritingEntityEventArgs.cs
- RootBrowserWindowProxy.cs
- FrameAutomationPeer.cs
- HealthMonitoringSectionHelper.cs
- FamilyMap.cs
- EventPrivateKey.cs
- NodeLabelEditEvent.cs
- SystemWebExtensionsSectionGroup.cs
- Int32AnimationBase.cs
- SecurityContextSecurityToken.cs
- SelfIssuedTokenFactoryCredential.cs
- ObjectDataSource.cs
- ObjectItemCollection.cs
- IssuanceLicense.cs
- SerializableAttribute.cs
- StringComparer.cs
- ObjectView.cs
- Imaging.cs
- InvalidOperationException.cs
- VirtualPathProvider.cs
- XMLDiffLoader.cs
- StylusPointPropertyInfo.cs
- Visitor.cs
- TableCell.cs
- TreeNodeStyle.cs
- HttpPostServerProtocol.cs
- TextUtf8RawTextWriter.cs
- LiteralControl.cs
- GridViewCancelEditEventArgs.cs
- Enlistment.cs
- SpellerHighlightLayer.cs
- StringHelper.cs
- DependencyPropertyAttribute.cs
- KeyedCollection.cs
- StrongNameUtility.cs
- ImageDrawing.cs
- InternalBufferOverflowException.cs
- Storyboard.cs
- Html32TextWriter.cs
- ProcessProtocolHandler.cs
- FtpCachePolicyElement.cs
- SafeCryptoHandles.cs
- Profiler.cs
- InputScopeAttribute.cs
- TemplateApplicationHelper.cs
- StylusPlugInCollection.cs
- safemediahandle.cs
- Timer.cs
- BindingUtils.cs
- XmlNamespaceMapping.cs