Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / System / Activities / Validation / ExtensionMethods.cs / 1305376 / ExtensionMethods.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.Activities.Validation { using System.Collections; using System.Collections.Generic; using System.Text; static class ExtensionMethods { public static bool IsNullOrEmpty(this ICollection c) { return (c == null || c.Count == 0); } public static string AsCommaSeparatedValues(this IEnumerablec) { StringBuilder sb = new StringBuilder(); foreach (string s in c) { if (!string.IsNullOrEmpty(s)) { if (sb.Length == 0) { sb.Append(s); } else { sb.Append(", "); sb.Append(s); } } } return sb.ToString(); } public static int BinarySearch (this IList items, T value, IComparer comparer) { return BinarySearch(items, 0, items.Count, value, comparer); } public static void QuickSort (this IList items, IComparer comparer) { QuickSort(items, 0, items.Count - 1, comparer); } static int BinarySearch (IList items, int startIndex, int length, T value, IComparer comparer) { int start = startIndex; int end = (startIndex + length) - 1; while (start <= end) { int mid = start + ((end - start) >> 1); int result = comparer.Compare(items[mid], value); if (result == 0) { return mid; } if (result < 0) { start = mid + 1; } else { end = mid - 1; } } return ~start; } static void QuickSort (IList items, int startIndex, int endIndex, IComparer comparer) { Stack bounds = new Stack (); do { if (bounds.Count != 0) { endIndex = bounds.Pop(); startIndex = bounds.Pop(); } T pivot = items[startIndex]; int pivotIndex = startIndex; for (int i = startIndex + 1; i <= endIndex; i++) { if (comparer.Compare(pivot, items[i]) > 0) { pivotIndex++; if (pivotIndex != i) { items.Swap(pivotIndex, i); } } } if (startIndex != pivotIndex) { items.Swap(startIndex, pivotIndex); } if (pivotIndex + 1 < endIndex) { bounds.Push(pivotIndex + 1); bounds.Push(endIndex); } if (startIndex < pivotIndex - 1) { bounds.Push(startIndex); bounds.Push(pivotIndex - 1); } } while (bounds.Count != 0); } static void Swap (this IList items, int i, int j) { T temp = items[i]; items[i] = items[j]; items[j] = temp; } } } // 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
- SettingsSection.cs
- RelOps.cs
- UrlMappingCollection.cs
- BindingManagerDataErrorEventArgs.cs
- PrintingPermissionAttribute.cs
- XmlArrayItemAttributes.cs
- __Filters.cs
- AccessDataSourceView.cs
- ListSortDescriptionCollection.cs
- WebPartTransformer.cs
- FrameworkRichTextComposition.cs
- JsonGlobals.cs
- SystemThemeKey.cs
- GlobalizationAssembly.cs
- ActivityInterfaces.cs
- DateTimeSerializationSection.cs
- VariableModifiersHelper.cs
- Parameter.cs
- SafeNativeMethods.cs
- ControlFilterExpression.cs
- StaticTextPointer.cs
- userdatakeys.cs
- Int32.cs
- ObjectConverter.cs
- RemotingException.cs
- EntitySqlQueryCacheKey.cs
- RequestQueryProcessor.cs
- XmlTextEncoder.cs
- XmlDataImplementation.cs
- GestureRecognitionResult.cs
- PackWebResponse.cs
- VBIdentifierDesigner.xaml.cs
- VBIdentifierName.cs
- BitmapEffectInputData.cs
- MultiView.cs
- MasterPage.cs
- ScriptIgnoreAttribute.cs
- FixedPage.cs
- XmlKeywords.cs
- DataGridPageChangedEventArgs.cs
- RectAnimationBase.cs
- QueryOperator.cs
- CultureInfoConverter.cs
- InkSerializer.cs
- SyndicationDeserializer.cs
- ObjectItemCollection.cs
- UIPermission.cs
- InputGestureCollection.cs
- FixedSOMFixedBlock.cs
- EpmContentDeSerializer.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- AuditLevel.cs
- _DomainName.cs
- RadialGradientBrush.cs
- PrincipalPermission.cs
- OutputCacheProfile.cs
- webproxy.cs
- HtmlEncodedRawTextWriter.cs
- FacetDescription.cs
- PageEventArgs.cs
- DesignerView.xaml.cs
- LinqDataSourceContextEventArgs.cs
- MetadataUtil.cs
- RootBrowserWindow.cs
- ErrorLog.cs
- ClientApiGenerator.cs
- Border.cs
- ObjectDataSourceDisposingEventArgs.cs
- InvalidCastException.cs
- DynamicMetaObject.cs
- DrawingImage.cs
- ComMethodElementCollection.cs
- NoResizeSelectionBorderGlyph.cs
- CustomExpression.cs
- XmlILOptimizerVisitor.cs
- DataBindingCollectionEditor.cs
- ExecutedRoutedEventArgs.cs
- ArrowControl.xaml.cs
- CellNormalizer.cs
- XPathDescendantIterator.cs
- ListViewItemMouseHoverEvent.cs
- DispatcherEventArgs.cs
- WindowsHyperlink.cs
- ComponentCommands.cs
- ReferenceTypeElement.cs
- SqlGatherProducedAliases.cs
- httpstaticobjectscollection.cs
- BuildProvidersCompiler.cs
- DbMetaDataColumnNames.cs
- PerformanceCountersElement.cs
- ToolStripDropDownButton.cs
- ServiceModelActivationSectionGroup.cs
- XmlCharCheckingWriter.cs
- LinearKeyFrames.cs
- DeadCharTextComposition.cs
- COAUTHIDENTITY.cs
- TriggerActionCollection.cs
- Ticks.cs
- IPAddress.cs
- FixedDocument.cs