C# 如何对包含属性的类的列表集合进行排序?

C# 如何对包含属性的类的列表集合进行排序?,c#,.net,asp.net-mvc,linq,sorting,C#,.net,Asp.net Mvc,Linq,Sorting,我的收藏中有一个类列表,如 List<MyClass> test = new List<MyClass>(); 现在,我通过从两个不同的数据库表获取一些查询来创建这些类。然后,我从数据库表中获取这两个结果,并使用foreach循环生成一个新的MyClass对象,并将其粘贴到我的“test”集合中 现在,一旦所有这些类都放入列表集合中。我想对它们进行排序,并按“date”属性对类进行排序 我怎么能这样做?当我从数据库中获取它们时,我不能马上进行排序,因为我从两个不同的数据

我的收藏中有一个类列表,如

List<MyClass> test = new List<MyClass>();
现在,我通过从两个不同的数据库表获取一些查询来创建这些类。然后,我从数据库表中获取这两个结果,并使用foreach循环生成一个新的MyClass对象,并将其粘贴到我的“test”集合中

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

我怎么能这样做?当我从数据库中获取它们时,我不能马上进行排序,因为我从两个不同的数据库表中获取它们,并且单独排序只会使它在每个部分中排序,但是表1可能有12/12/2009,表2也可能有12/12/2009。所以他们需要一起订购

我可以用linq或其他什么东西来订购吗


一旦您在列表中列出了您的课程,并且列表已完成,请立即致谢:

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

var orderedList = testList.OrderBy( x => x.date ).ToList();
List testList=newlist();
//填充列表。。。
var orderedList=testList.OrderBy(x=>x.date.ToList();
那么:

list.Sort((x,y) => DateTime.Compare(x.date, y.date));
对现有列表进行排序,或:

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

这将创建第二个列表。

如果要对它们进行适当排序,可以使用:


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

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

啊,我试过了,但没有把.ToList()放在后面。我看到一些人使用了比较函数,这有什么好处吗?是的,正如我在下面提到的,我在发布之前尝试了第二种方法,但没有使用.ToList(),所以orderBy总是创建一个新列表,而sort没有?是的。排序对列表进行适当排序,从而更改原始列表。LINQ(第二个方法)创建一个新的枚举。通过添加“ToList”,可以将其转换为列表,而不是IEnumerable。如果您只是想在foreach循环中使用结果,可以关闭“ToList()”方法。我们可以对名为“Name”的string类型的属性执行orderby吗?如下所示。。。。。var list2=list1.where(o=>o.Name.contains(“test”)).orderby(o=>o.Name).Take(10.toList();
test.Sort( (l,r) => l.date.CompareTo(r.date) );
var sortedResults = from mc in test
                    order by mc.date
                    select mc;