DEV Community

Nick
Nick

Posted on

How to Sort Two-Dimensional Array in C# by Selected Column Index in Selected Column Sort Order

In C#, sorting a two-dimensional array by a selected column index in a selected column sort order can be achieved using the Array.Sort method. This method takes in the array to be sorted and a comparison delegate that defines the sorting order based on the selected column index.

First, let's create a two-dimensional array to be sorted. For this example, we will create a matrix of integers:

int[,] numbers = new int[,]
{
    {4, 2, 5},
    {1, 7, 3},
    {9, 6, 8}
};
Enter fullscreen mode Exit fullscreen mode

Next, we will define a method that will be used as the comparison delegate for sorting based on a selected column index and sort order:

static int CompareRowsByColumn(int[,] array, int column, bool ascending, int x, int y)
{
    int comparison = array[x, column].CompareTo(array[y, column]);
    return ascending ? comparison : -comparison;
}
Enter fullscreen mode Exit fullscreen mode

Now, we can use the Array.Sort method to sort the array by a selected column index in ascending order:

int selectedColumnIndex = 1;
bool ascending = true;

Array.Sort(Enumerable.Range(0, numbers.GetLength(0)).ToArray(),
           (x, y) => CompareRowsByColumn(numbers, selectedColumnIndex, ascending, x, y));

Enter fullscreen mode Exit fullscreen mode

The code above will sort the array by the selected column index (1 in this case) in ascending order. To sort the array in descending order, simply set the ascending variable to false.

By following these steps, you can easily sort a two-dimensional array in C# by a selected column index in a selected column sort order. This technique can be applied to arrays of various types, not just integers. Experiment with different data types and sorting criteria to achieve your desired results.

Top comments (0)