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
- WmlTextBoxAdapter.cs
- DetailsViewInsertedEventArgs.cs
- Vector3DCollectionConverter.cs
- RegexFCD.cs
- FixedSOMPageConstructor.cs
- BitmapEffectInput.cs
- DocumentSequenceHighlightLayer.cs
- DataTableClearEvent.cs
- DataBindingCollection.cs
- ApplyImportsAction.cs
- PageEventArgs.cs
- HttpResponseInternalWrapper.cs
- _CookieModule.cs
- MatchAttribute.cs
- AsyncStreamReader.cs
- HighContrastHelper.cs
- DocumentPageHost.cs
- GraphicsContainer.cs
- EditorAttributeInfo.cs
- TreeViewDesigner.cs
- DataServiceResponse.cs
- TextTreeInsertElementUndoUnit.cs
- PointCollectionConverter.cs
- ParallelRangeManager.cs
- PrintingPermissionAttribute.cs
- ChannelFactoryBase.cs
- TextEditorLists.cs
- ObjectAnimationUsingKeyFrames.cs
- XamlClipboardData.cs
- PositiveTimeSpanValidatorAttribute.cs
- SamlAssertionKeyIdentifierClause.cs
- DataTable.cs
- RuntimeResourceSet.cs
- TextSelection.cs
- ScrollProperties.cs
- DocumentGrid.cs
- Encoder.cs
- OverrideMode.cs
- EncoderExceptionFallback.cs
- NegatedConstant.cs
- path.cs
- SuppressMergeCheckAttribute.cs
- ExceptionUtil.cs
- Math.cs
- RtfControls.cs
- PreloadedPackages.cs
- DbConnectionClosed.cs
- _Rfc2616CacheValidators.cs
- FixedSOMContainer.cs
- ImportContext.cs
- DataColumnMapping.cs
- DSASignatureFormatter.cs
- Interlocked.cs
- XmlHelper.cs
- GenericIdentity.cs
- Process.cs
- DataPagerFieldCommandEventArgs.cs
- DrawingVisualDrawingContext.cs
- ListItemParagraph.cs
- Point3DValueSerializer.cs
- SqlPersonalizationProvider.cs
- SqlStream.cs
- StringCollectionMarkupSerializer.cs
- MaterialCollection.cs
- UTF7Encoding.cs
- Screen.cs
- JsonWriterDelegator.cs
- IDReferencePropertyAttribute.cs
- AutomationTextAttribute.cs
- SqlDataReader.cs
- Section.cs
- StylusPointPropertyId.cs
- UriTemplateTrieLocation.cs
- SignedPkcs7.cs
- EditingCommands.cs
- PackageDigitalSignatureManager.cs
- DataGridPagingPage.cs
- Vector3D.cs
- PersonalizationEntry.cs
- DecimalAnimationUsingKeyFrames.cs
- Char.cs
- ClientScriptItem.cs
- XmlSchemaParticle.cs
- GcSettings.cs
- FilterQuery.cs
- EntitySqlQueryBuilder.cs
- Compilation.cs
- DockProviderWrapper.cs
- HtmlElementErrorEventArgs.cs
- ChangeInterceptorAttribute.cs
- Geometry3D.cs
- ListSortDescription.cs
- SqlConnectionPoolProviderInfo.cs
- WsatServiceCertificate.cs
- TaiwanLunisolarCalendar.cs
- parserscommon.cs
- DefaultSection.cs
- ToggleProviderWrapper.cs
- TemplatePropertyEntry.cs
- AssemblyNameProxy.cs