TheDeveloperBlog.com

Home | Contact Us

C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML

<< Back to C-SHARP

C# Comparison Object, Used With Array.Sort

Use the Comparison delegate type with the Array.Sort method. See static method and lambda syntax.
Comparison. This type enables custom sorting. It is often used with Array.Sort or List.Sort. We implement Comparison(T) using its constructor.Constructor
The target is a method that receives 2 parameters of the appropriate type and returns an int. It determines sorting order of the parameters.Generic Class, Method
An example. This program introduces 2 static methods. In the Main entry point control flow begins. And the CompareLength method receives 2 strings and returns an int.

Here: We create an array of strings. Then we create a new Comparison<string> object using the CompareLength method as the target.

Finally: We sort the array again using this Comparison delegate and display it.

CompareLength: We use CompareTo with the lengths of both strings. CompareTo returns an integer value indicating the comparison result.

CompareTo

Reverse: To reverse the sort, just reverse the order of the CompareTo expression variables.

C# program that uses Comparison delegate using System; class Program { static int CompareLength(string a, string b) { // Return result of CompareTo with lengths of both strings. return a.Length.CompareTo(b.Length); } static void Main() { // Source array. string[] array = { "bird", "elephant", "dog", "cat", "mouse" }; // Display array. foreach (string element in array) { Console.WriteLine(element); } Console.WriteLine(); // Create Comparison instance and use it. Comparison<string> comparison = new Comparison<string>(CompareLength); Array.Sort(array, comparison); // Display array. foreach (string element in array) { Console.WriteLine(element); } } } Output bird elephant dog cat mouse cat dog bird mouse elephant
Lambda example. We do not need to use a static method for the Comparison implementation. We can instead use a lambda expression. Here we sort on string lengths with a lambda Comparison.Lambda
C# program that uses Comparison lambda using System; class Program { static void Main() { string[] array = { "4444", "1", "22", "333" }; // Use lambda to sort on length. Array.Sort(array, (a, b) => a.Length.CompareTo(b.Length)); // Write result. Console.WriteLine("RESULT: {0}", string.Join(";", array)); } } Output RESULT: 1;22;333;4444
Requirements. The Comparison(T) type requires that you specify a method that receives two parameters of type T and then returns an int. You pass the method name to the constructor.

Tip: You can often implicitly use the Comparison delegate by just passing the target method name.

Notes, target method. How do you implement the code inside the target method (like CompareLength)? Use the CompareTo method on a property, field, or other value from each type.
Discussion. There are many other examples of using Comparison. You can use Comparison without specifying the constructor explicitly. It is compatible with the lambda expression syntax.Sort KeyValuePair ListTuple

Also: A Comparison can be used with the List.Sort or Array.Sort methods. Try caching the lambda for a small speedup.

Sort ListArray.Sort
A summary. We looked at the Comparison type. We provided an example of the Comparison(T) constructor, but also pointed out that it is not necessary to provide in all cases.
We implemented the target method by using the CompareTo method. CompareTo is not required, but it fills the comparison return value requirement easily.
© TheDeveloperBlog.com
The Dev Codes

Related Links:


Related Links

Adjectives Ado Ai Android Angular Antonyms Apache Articles Asp Autocad Automata Aws Azure Basic Binary Bitcoin Blockchain C Cassandra Change Coa Computer Control Cpp Create Creating C-Sharp Cyber Daa Data Dbms Deletion Devops Difference Discrete Es6 Ethical Examples Features Firebase Flutter Fs Git Go Hbase History Hive Hiveql How Html Idioms Insertion Installing Ios Java Joomla Js Kafka Kali Laravel Logical Machine Matlab Matrix Mongodb Mysql One Opencv Oracle Ordering Os Pandas Php Pig Pl Postgresql Powershell Prepositions Program Python React Ruby Scala Selecting Selenium Sentence Seo Sharepoint Software Spellings Spotting Spring Sql Sqlite Sqoop Svn Swift Synonyms Talend Testng Types Uml Unity Vbnet Verbal Webdriver What Wpf