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
- SoapReflectionImporter.cs
- EventToken.cs
- IsolatedStorage.cs
- XmlWhitespace.cs
- ContextDataSourceContextData.cs
- DiscriminatorMap.cs
- RemotingSurrogateSelector.cs
- ThrowHelper.cs
- CoreSwitches.cs
- WebScriptMetadataMessage.cs
- EncoderBestFitFallback.cs
- TemplateEditingVerb.cs
- IPPacketInformation.cs
- Catch.cs
- TreeBuilder.cs
- XPathScanner.cs
- RtfNavigator.cs
- ValidatingReaderNodeData.cs
- WebResourceAttribute.cs
- Variable.cs
- Directory.cs
- TableSectionStyle.cs
- PointHitTestParameters.cs
- AssemblyInfo.cs
- Grid.cs
- ModuleBuilder.cs
- WmlLinkAdapter.cs
- ViewStateException.cs
- OleAutBinder.cs
- ForwardPositionQuery.cs
- assertwrapper.cs
- CacheAxisQuery.cs
- ClientRuntimeConfig.cs
- XmlSerializer.cs
- BinaryObjectReader.cs
- DataBoundControlHelper.cs
- Stackframe.cs
- HandledMouseEvent.cs
- VirtualPathUtility.cs
- storagemappingitemcollection.viewdictionary.cs
- SqlBinder.cs
- HierarchicalDataTemplate.cs
- WindowsImpersonationContext.cs
- ParserExtension.cs
- TableChangeProcessor.cs
- SmtpNegotiateAuthenticationModule.cs
- FrameworkContextData.cs
- SecurityTokenParametersEnumerable.cs
- EmptyEnumerator.cs
- XmlWrappingReader.cs
- Utils.cs
- BamlWriter.cs
- RegexCompilationInfo.cs
- XmlIlGenerator.cs
- PersonalizationStateQuery.cs
- SiteMapNode.cs
- SafeThreadHandle.cs
- TranslateTransform3D.cs
- AnimatedTypeHelpers.cs
- RuntimeCompatibilityAttribute.cs
- BinHexDecoder.cs
- PrintController.cs
- SecurityCriticalDataForSet.cs
- DbgUtil.cs
- cookieexception.cs
- DesignerDataView.cs
- glyphs.cs
- XsltCompileContext.cs
- httpstaticobjectscollection.cs
- IsolatedStorageFile.cs
- BlockUIContainer.cs
- Application.cs
- Point4DConverter.cs
- ColorContextHelper.cs
- Crc32.cs
- ProfileGroupSettings.cs
- SpotLight.cs
- ResourceDisplayNameAttribute.cs
- TrackingWorkflowEventArgs.cs
- HostedHttpRequestAsyncResult.cs
- CachedRequestParams.cs
- HoistedLocals.cs
- TerminateSequence.cs
- RightNameExpirationInfoPair.cs
- StatusBarDrawItemEvent.cs
- TextRange.cs
- BrowserDefinitionCollection.cs
- HelpEvent.cs
- LeaseManager.cs
- infer.cs
- InstancePersistenceException.cs
- MetafileHeaderWmf.cs
- TypeBuilder.cs
- HtmlGenericControl.cs
- ImageDesigner.cs
- ApplicationFileParser.cs
- MonthChangedEventArgs.cs
- AttributeExtensions.cs
- DrawingBrush.cs
- ApplicationManager.cs