Linq OrderByDescending(OrderBy)和AddOrder之间的差异

Linq OrderByDescending(OrderBy)和AddOrder之间的差异,linq,nhibernate,hibernate-criteria,Linq,Nhibernate,Hibernate Criteria,此代码 criteria .AddOrder(new Order("AnnoInizialePfk", false)) .List<MyClass>() .ToDictionary(x => (short)x.AnnoInizialePfk, x => Convert.ToString(x.AnnoInizialePfk)); criteria .List<MyClass>() .OrderByDescending(x => x.Ann

此代码

criteria
.AddOrder(new Order("AnnoInizialePfk", false))
.List<MyClass>()        
.ToDictionary(x => (short)x.AnnoInizialePfk, x => Convert.ToString(x.AnnoInizialePfk));
criteria
.List<MyClass>()
.OrderByDescending(x => x.AnnoInizialePfk)
.ToDictionary(x => (short)x.AnnoInizialePfk, x => Convert.ToString(x.AnnoInizialePfk));
取而代之的是这个代码

criteria
.List<MyClass>()
.OrderByDescending(x => x.AnnoInizialePfk)
.ToDictionary(x => (short)x.AnnoInizialePfk, x => Convert.ToString(x.AnnoInizialePfk));
这两个结果集都是按降序排列的,但是在第二个代码中怎么可能呢

使用哪种代码更好

谢谢


Sara

第二条语句中的
List()
调用使其立即枚举Select。i、 e.“OrderBy”在内存中完成,而不是在数据库中完成。您应该交换OrderBy和List调用(虽然您并不真正需要List,因为它是多余的,因为ToDictionary也会这样做)。

噢,除非您有特殊原因使用
AddOrder()
语法(查询序列化?),否则我会坚持使用标准的LINQ
OrderBy()
方法。不,在这种情况下,我们是无动于衷的。我还预选了第二段代码,因为我可以使用对象名而不是列名。
SELECT this_.ANNO_PFK as y0_ FROM dbo.Table this_