SortedList<TKey, TValue> Constructor (IDictionary<TKey, TValue>, IComparer<TKey>)

Initializes a new instance of the SortedList<TKey, TValue> class that contains elements copied from the specified IDictionary<TKey, TValue>, has sufficient capacity to accommodate the number of elements copied, and uses the specified IComparer<T>.

Namespace:  System.Collections.Generic
Assembly:  System (in System.dll)

public SortedList(
	IDictionary<TKey, TValue> dictionary,
	IComparer<TKey> comparer
)

Parameters

dictionary
Type: System.Collections.Generic.IDictionary<TKey, TValue>

The IDictionary<TKey, TValue> whose elements are copied to the new SortedList<TKey, TValue>.

comparer
Type: System.Collections.Generic.IComparer<TKey>

The IComparer<T> implementation to use when comparing keys.

-or-

null to use the default Comparer<T> for the type of the key.

ExceptionCondition
ArgumentNullException

dictionary is null.

ArgumentException

dictionary contains one or more duplicate keys.

Every key in a SortedList<TKey, TValue> must be unique according to the specified comparer; likewise, every key in the source dictionary must also be unique according to the specified comparer.

The capacity of the new SortedList<TKey, TValue> is set to the number of elements in dictionary, so no resizing takes place while the list is being populated.

If the data in dictionary are sorted, this constructor is an O(n) operation, where n is the number of elements in dictionary. Otherwise it is an O(n*n) operation.

The following code example shows how to use SortedList<TKey, TValue> to create a case-insensitive sorted copy of the information in a case-insensitive Dictionary<TKey, TValue>, by passing the Dictionary<TKey, TValue> to the SortedList<TKey, TValue>(IDictionary<TKey, TValue>, IComparer<TKey>) constructor. In this example, the case-insensitive comparers are for the current culture.

using System;
using System.Collections.Generic;

public class Example
{
    public static void Main()
    {
        // Create a new Dictionary of strings, with string keys and 
        // a case-insensitive equality comparer for the current  
        // culture.
        Dictionary<string, string> openWith = 
            new Dictionary<string, string>
                (StringComparer.CurrentCultureIgnoreCase);

        // Add some elements to the dictionary. 
        openWith.Add("txt", "notepad.exe");
        openWith.Add("Bmp", "paint.exe");
        openWith.Add("DIB", "paint.exe");
        openWith.Add("rtf", "wordpad.exe");

        // Create a SortedList of strings with string keys and a  
        // case-insensitive equality comparer for the current culture, 
        // and initialize it with the contents of the Dictionary.
        SortedList<string, string> copy = 
            new SortedList<string, string>(openWith, 
                StringComparer.CurrentCultureIgnoreCase);

        // List the sorted contents of the copy.
        Console.WriteLine();
        foreach( KeyValuePair<string, string> kvp in copy )
        {
            Console.WriteLine("Key = {0}, Value = {1}", kvp.Key, 
                kvp.Value);
        }
    }
}

/* This code example produces the following output:

Key = Bmp, Value = paint.exe
Key = DIB, Value = paint.exe
Key = rtf, Value = wordpad.exe
Key = txt, Value = notepad.exe
 */

.NET Framework

Supported in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Was this page helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft