I'm interested in sorting a collection, but also returning an index which can be used to map to the original position in the collection (before the sort).

Let me give an example to be more clear:

```
List<int> A = new List<int>(){3,2,1};
List<int> B;
List<int> idx;

Sort(A,out B,out idx);

```

After which: 

```
A = [3,2,1] 
B = [1,2,3]
idx = [2,1,0]

```

So that the relationship between A,B,idx is: 

`A[i] == B[ idx[i] ]` , for i = 0...2

Does C#/.Net have any built in mechanism to make this easy to implement?

Thanks.