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
- DeferredSelectedIndexReference.cs
- RoleManagerEventArgs.cs
- Viewport3DVisual.cs
- LogSwitch.cs
- GregorianCalendar.cs
- XmlReflectionImporter.cs
- CompressionTransform.cs
- ThicknessConverter.cs
- XmlDataSource.cs
- RSAOAEPKeyExchangeDeformatter.cs
- TextElement.cs
- Floater.cs
- AppliedDeviceFiltersDialog.cs
- SignatureToken.cs
- ObjectDataSourceMethodEventArgs.cs
- Int16KeyFrameCollection.cs
- VScrollBar.cs
- AssemblyUtil.cs
- ReadOnlyDataSourceView.cs
- AssociationType.cs
- TimelineGroup.cs
- VisualBrush.cs
- AstTree.cs
- DPTypeDescriptorContext.cs
- ELinqQueryState.cs
- EntityDataSourceEntityTypeFilterItem.cs
- EdgeProfileValidation.cs
- SizeValueSerializer.cs
- MsmqHostedTransportConfiguration.cs
- safex509handles.cs
- ExpressionBinding.cs
- GZipDecoder.cs
- SortKey.cs
- remotingproxy.cs
- SqlConnectionPoolProviderInfo.cs
- AuthenticationConfig.cs
- FirstMatchCodeGroup.cs
- PackagePart.cs
- ToolStripRenderEventArgs.cs
- ScriptingProfileServiceSection.cs
- InfoCardRSACryptoProvider.cs
- ListBox.cs
- IndentedWriter.cs
- PerspectiveCamera.cs
- DateTimeOffsetConverter.cs
- CroppedBitmap.cs
- BaseCollection.cs
- SqlFacetAttribute.cs
- SQLDouble.cs
- AttributeEmitter.cs
- StylusPointCollection.cs
- MergeEnumerator.cs
- InputReportEventArgs.cs
- ToolStripPanel.cs
- AuthenticationManager.cs
- MultiPropertyDescriptorGridEntry.cs
- XmlWriterDelegator.cs
- ResXResourceSet.cs
- MessageBox.cs
- References.cs
- ScrollBarRenderer.cs
- DataViewSetting.cs
- VarInfo.cs
- WebBrowserBase.cs
- DelegatingTypeDescriptionProvider.cs
- MappingModelBuildProvider.cs
- SelectedGridItemChangedEvent.cs
- ADRole.cs
- KeyBinding.cs
- OverrideMode.cs
- SelectionService.cs
- PartitionerStatic.cs
- Content.cs
- NameTable.cs
- EditorZone.cs
- WebPartsPersonalization.cs
- ToolConsole.cs
- LineServicesRun.cs
- PassportPrincipal.cs
- WhitespaceSignificantCollectionAttribute.cs
- OleDbRowUpdatingEvent.cs
- RectKeyFrameCollection.cs
- MemoryStream.cs
- RandomNumberGenerator.cs
- DispatcherHookEventArgs.cs
- SqlDataSourceQueryEditorForm.cs
- TextProviderWrapper.cs
- OracleTimeSpan.cs
- ToggleProviderWrapper.cs
- KnownAssembliesSet.cs
- WebBrowserHelper.cs
- CompilerState.cs
- ProcessRequestAsyncResult.cs
- NullableIntMinMaxAggregationOperator.cs
- MessageEncoder.cs
- ConstNode.cs
- PageContentAsyncResult.cs
- X509SubjectKeyIdentifierClause.cs
- Listbox.cs
- CompressedStack.cs