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
- PageCodeDomTreeGenerator.cs
- SwitchAttribute.cs
- StyleModeStack.cs
- MatrixAnimationUsingKeyFrames.cs
- CodeAttributeArgumentCollection.cs
- DataGridViewTopLeftHeaderCell.cs
- Delay.cs
- WindowHideOrCloseTracker.cs
- BindingListCollectionView.cs
- CharUnicodeInfo.cs
- CqlParserHelpers.cs
- OptionalColumn.cs
- HashHelper.cs
- SHA1Managed.cs
- ConfigsHelper.cs
- Border.cs
- RouteValueDictionary.cs
- UDPClient.cs
- RecordsAffectedEventArgs.cs
- SettingsBindableAttribute.cs
- BamlRecordReader.cs
- FromRequest.cs
- StandardOleMarshalObject.cs
- ColorEditor.cs
- PrimitiveSchema.cs
- SimpleRecyclingCache.cs
- ContentValidator.cs
- FormatPage.cs
- StateRuntime.cs
- EmptyEnumerator.cs
- WebPartCatalogAddVerb.cs
- WebHttpBindingElement.cs
- WorkflowItemPresenter.cs
- sqlnorm.cs
- LoginCancelEventArgs.cs
- PageHandlerFactory.cs
- DesignerCategoryAttribute.cs
- SortableBindingList.cs
- PreviewPageInfo.cs
- Brush.cs
- AssemblyAssociatedContentFileAttribute.cs
- CodeLabeledStatement.cs
- ProxyDataContractResolver.cs
- EncryptedReference.cs
- WebSysDefaultValueAttribute.cs
- ClosableStream.cs
- SslStreamSecurityElement.cs
- BitmapDownload.cs
- ApplicationServicesHostFactory.cs
- UnsafeNativeMethodsCLR.cs
- IdnElement.cs
- ActivitySurrogateSelector.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- CompositeCollectionView.cs
- DbProviderFactory.cs
- SpecialFolderEnumConverter.cs
- PeerEndPoint.cs
- ServicesUtilities.cs
- ExpressionTable.cs
- TraceRecords.cs
- DesignerLoader.cs
- Memoizer.cs
- XmlBufferReader.cs
- CqlGenerator.cs
- InputReferenceExpression.cs
- ListBox.cs
- AssociationSetEnd.cs
- ReferencedAssemblyResolver.cs
- Size3DValueSerializer.cs
- SimpleTextLine.cs
- LoginNameDesigner.cs
- SafeRegistryKey.cs
- DirectionalLight.cs
- ImagingCache.cs
- BitVector32.cs
- HtmlInputSubmit.cs
- ArgumentNullException.cs
- FileRecordSequence.cs
- UnicodeEncoding.cs
- ZipIOLocalFileBlock.cs
- XmlEntity.cs
- CodeCastExpression.cs
- DBCommandBuilder.cs
- AddInProcess.cs
- ServiceDescription.cs
- CodeCatchClause.cs
- LayoutInformation.cs
- TextTreeDeleteContentUndoUnit.cs
- DelegateSerializationHolder.cs
- ResourceIDHelper.cs
- EmptyControlCollection.cs
- ModifiableIteratorCollection.cs
- ListViewSelectEventArgs.cs
- WebPartManagerInternals.cs
- OleDbRowUpdatedEvent.cs
- TextEditorParagraphs.cs
- MethodBuilderInstantiation.cs
- CodeLabeledStatement.cs
- BaseTemplateBuildProvider.cs
- InputReport.cs