Question: I have an `IList<T>` that I need to sort, and I would rather not copy the list if possible. I've noticed that `ArrayList` has an `Adapter` static method that wraps the passed list without copying it, but this takes an `IList` and I have an `IList<T>`. Is it safe to cast from a `System.Collections.Generic.IList<T>` to a `System.Collections.IList` and just use the `Adapter` method?

Note that this is .Net 2.0, so LINQ is not an option.

Answer: 
I know it isn't .NET 2.0 but I love LINQ so much and will endorse it every chance I get :)

**Simple Sort:**

```
var sortedProducts =
    from p in products
    orderby p.ProductName
    select p;

ObjectDumper.Write(sortedProducts);

```

**Sort by multiple conditions:**

```
string[] digits = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };

var sortedDigits =
    from d in digits 
    orderby d.Length, d
    select d;

```

Both examples are from [101 Linq Samples](http://msdn.microsoft.com/en-us/vcsharp/aa336756.aspx)
```
IList<object> unsorted = ...
IList<object> sortedList = unsorted.Orderby(x => x.Tostring()).Tolist();

```

this will give the sorted list on the particular field of the object.