简体   繁体   中英

How to sort a List collection of classes with properties in them?

I have a List of classes in my collection like

List<MyClass> test = new List<MyClass>();

In my classes I have just some properties

public string id {get; set;}
public DateTime date {get; set;}

Now I make these classes by getting some queries from 2 different database tables. I then take those 2 results from the database tables and using a foreach loop I make a new MyClass object and stick it in my "test" collection.

Now once all these classes are put in the the list collection. I want to sort through them and order the classes by the "date" property.

How could I do this? I can't order then right when I get them from the database since I am getting them from 2 different database tables and ordering them separately would only make it ordered in for each section but table one might have 12/12/2009 and so might table two. So they need to be ordered together.

So can I some how use linq or something to order them?

Thanks

How about:

list.Sort((x,y) => DateTime.Compare(x.date, y.date));

which sorts the existing list, or:

var sorted = list.OrderBy(x=>x.date).ToList();

which creates a second list.

If you want to sort them in place, you can use List<T>.Sort :

test.Sort( (l,r) => l.date.CompareTo(r.date) );

If you want to sort them into a new result set, LINQ is very nice:

var sortedResults = from mc in test
                    order by mc.date
                    select mc;

Once you have your classes in your list, and the list is complete:

List<MyClass> testList = new List<MyClass>();
// populate the list...

var orderedList = testList.OrderBy( x => x.date ).ToList();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM