我正在使用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<MyEntity> to System.Collections.Generic.List<MyEntity>
如果我输入演员:
leaves = (List<MyEntity>)leaves.Concat(otherleaves)
然后我得到运行时错误。
答案 0 :(得分:9)
您未指定OrderByDescending
leaves = leaves.OrderByDescending(e => e.StartDate).ToList();
或做
leaves = leaves.Concat(otherleaves).OrderByDescending(e => e.StartDate).ToList();
答案 1 :(得分:1)
OrderByDescending
没有“排序”。它返回一个必须分配给变量的IOrderedEnumerable
。
var orderedLeaves = leaves.OrderByDescending(e => e.StartDate);
答案 2 :(得分:0)
OrderByDescending
没有订购列表,它返回一个新的有序IEnumerable
。因此,使用OrderByDescending
的结果来显示您的商品。