如何对包含属性的类的List集合进行排序?

时间:2009-12-29 19:46:14

标签: c# .net asp.net-mvc linq sorting

我的集合中有一个类列表,如

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

在我的课程中,我只有一些属性

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

现在我通过从2个不同的数据库表中获取一些查询来创建这些类。然后我从数据库表中获取这两个结果并使用foreach循环创建一个新的MyClass对象并将其粘贴在我的“test”集合中。

现在,将所有这些类放入列表集合中。我想对它们进行排序并按“date”属性对这些类进行排序。

我怎么能这样做?当我从数据库中获取它们时,我无法正确订购,因为我从2个不同的数据库表中获取它们并且单独订购它们只会为每个部分订购它,但是表1可能有12/12/2009因此可能表二。所以他们需要一起订购。

那么我可以使用linq或其他东西来订购它们吗?

由于

3 个答案:

答案 0 :(得分:20)

怎么样:

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

对现有列表进行排序,或者:

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

创建第二个列表。

答案 1 :(得分:3)

如果您想对它们进行排序,可以使用List<T>.Sort

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

如果要将它们排序为新的结果集,LINQ非常好用:

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

答案 2 :(得分:2)

列表中的课程完成后,列表就完成了:

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

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