13,056,397 members (120,982 online)
alternative version

#### Stats

15.2K views
10 bookmarked
Posted 21 May 2009

# SequenceCompare - Comparing Sequences of IEnumerable

, 21 May 2009
 Rate this:
A simple set of extension methods comparing sequences of IEnumerable

## Introduction

This short article describes a simple extension method for comparing sequences of values, and therefore sorting sequences against each other.

The original need for these extension methods was that we were displaying a series of lists in grid cells, and we wanted to be able to sort the grid by that column. Ordinary alphabetical sorting on the display text was inadequate because if some elements were numbers, then alphabetical falls short of being useful. Using natural sorting on the display text was an option, but this was a simpler route.

While this code does resemble `SequenceEqual`, it's intended use is quite different. Since this provides comparison and not just equality, it enables you to sort sequences of sequences, rather than just testing if two sequencces are the same or not.

## Using the Code

To use the code, simply include:

`using SequenceCompareLib;`

Or copy the code to your own project and modify the namespace.

After this, you can:

• Call `SequenceCompare<T>` on any `IEnumerable<T>` where `T` implements `IComparable<T>`
• Call `List<IEnumerable<T>>.Sort()` passing in `SequenceComparer<T>.Default`
• Also specify your own `IComparer<T>` instance to do the element comparisons

For example:

```var random = new Random();
var values = new List<IEnumerable<int>>();

for (int i = 0; i < 10; ++i)
{
var items = new List<int>();
var count = random.Next(0, 6);
for (int j = 0; j < count; ++j)
{
}

items.Sort();
}

values.Sort(SequenceComparer<int>.Default);```

This will produce something like this:

```0
0 1
1 1 2 2 3
1 2
1 2
1 3
1 3
3
3 3 ```

## History

• 21st May, 2009: Initial post

## Share

 Software Developer (Senior) BitPlex Pty Ltd Australia
A professional developer in the Mining sector since 2000, Phil has a passion for creating robust, quality scientific applications.

I have started a software company, BitPlex, and I am focused on created a new and unique small business project planning tool called GamePlan.

My major fields of interest in software are 3D applications, visualisation, scheduling and optimisation, and novel UI design. My goal as a professional developer is to help people solve real world problems through reliable and fun to use software.

## You may also be interested in...

 First Prev Next
 Must implement call IDisposable.Dispose on enumerators. Marc Brooks26-May-09 13:13 Marc Brooks 26-May-09 13:13
 Re: Must implement call IDisposable.Dispose on enumerators. Phil Martin...26-May-09 16:24 Phil Martin... 26-May-09 16:24
 Last Visit: 31-Dec-99 18:00     Last Update: 28-Jul-17 9:32 Refresh 1