OrderByDescending在Linq中无法正常工作

我正在使用Linq并在C#中使用以下代码:

leaves = GetAnnualLeaves(); otherleaves = GetOtherLeaves(); leaves.AddRange(otherleaves); leaves.OrderByDescending(e => e.StartDate); 

基本上我试图显示年度和其他叶子的列表,我想以DESCENDING顺序显示它们。 问题是无论如何,它总是在“年叶”末尾显示“其他叶子”。 所以基本上它显示如下:

 2013-06-29 Annual 2012-01-01 Annual 2011-05-02 Annual 2013-05-01 Other 

实际上它应该显示如下:

 2013-06-29 Annual 2013-05-01 Other 2012-01-01 Annual 2011-05-02 Annual 

任何想法为什么下降顺序不起作用?

编辑

当我使用CONCAT时,我得到了投射错误。

“年度”和“其他”叶子都是相同的类型,但是当我这样做时

 leaves = leaves.Concat(otherleaves) 

然后项目不编译并给出错误

 Cannot implicitly convert type System.Collections.Generic.IEnumerable to System.Collections.Generic.List 

如果我打字:

 leaves = (List)leaves.Concat(otherleaves) 

然后我得到运行时错误。

您没有指定OrderByDescending结果

 leaves = leaves.OrderByDescending(e => e.StartDate).ToList(); 

或者做

 leaves = leaves.Concat(otherleaves).OrderByDescending(e => e.StartDate).ToList(); 

OrderByDescending不会“排序”。 它返回一个必须分配给变量的IOrderedEnumerable

 var orderedLeaves = leaves.OrderByDescending(e => e.StartDate); 

OrderByDescending

不排序列表,它返回一个新的有序IEnumerable 。 因此,使用OrderByDescending 的结果来显示您的项目。