PramodChoudhari
PramodChoudhari

Reputation: 2553

how to sort List<T> in c# / .net

I have a class PropertyDetails:

public class PropertyDetails
{

     public int Sequence { get; set; }

     public int Length { get; set; }

     public string Type { get; set; }
}

I am creating a list of PropertyDetails as

List<PropertyDetails> propertyDetailsList=new List<PropertyDetails>();

I want to sort this list by PropertyDetails.Sequence.

Linq solutions are welcome.

Upvotes: 16

Views: 21518

Answers (4)

Borja
Borja

Reputation: 2198

Using linq you can crate a new sorted list:

list.OrderBy(x => x.Sequence).ToList();

If you want to sort your current list, you can use a comparer:

list.Sort((details1, details2) => details1.Sequence.CompareTo(details2.Sequence);

Upvotes: 1

LukeH
LukeH

Reputation: 269628

If you want to sort the existing list in-place then you can use the Sort method:

List<PropertyDetails> propertyDetailsList = ...
propertyDetailsList.Sort((x, y) => x.Sequence.CompareTo(y.Sequence));

If you want to create a new, sorted copy of the list then you can use LINQ's OrderBy method:

List<PropertyDetails> propertyDetailsList = ...
var sorted = propertyDetailsList.OrderBy(x => x.Sequence).ToList();

(And if you don't need the results as a concrete List<T> then you can omit the final ToList call.)

Upvotes: 39

Tahbaza
Tahbaza

Reputation: 9546

var sortedList = propertyDetailsList.OrderBy(pd => pd.Sequence);

Upvotes: 0

escargot agile
escargot agile

Reputation: 22389

Don't ever use non-generic collections in C# when you can use generics instead. There are a lot of reasons to use generic collections only (except for very special cases).

See this question for more info: When would you not use Generic Collections?

So you can use List<PropertyDetails> (which I believe exposes a Sort() method) or SortedList<,>.

Upvotes: 2

Related Questions