.net IOrderedQueryable.AsEnumerable()是否仍然有序?

.net IOrderedQueryable.AsEnumerable()是否仍然有序?,.net,linq,entity-framework,entity,.net,Linq,Entity Framework,Entity,context.EntitySet.AsEnumerable().OrderBy()返回一个iorderenumerable,它保证是有序的,但看起来排序是在客户端完成的 context.EntitySet.OrderBy().AsEnumerable()将表达式保留为IOrderedQueryable,直到它最终成为IEnumerable。我相信在这种情况下,排序是由数据库完成的,这是更好的。在一些基本测试中,输出似乎仍然是有序的。即使IOrderedQueryable.AsEnumerabl

context.EntitySet.AsEnumerable().OrderBy()
返回一个
iorderenumerable
,它保证是有序的,但看起来排序是在客户端完成的


context.EntitySet.OrderBy().AsEnumerable()
将表达式保留为
IOrderedQueryable
,直到它最终成为
IEnumerable
。我相信在这种情况下,排序是由数据库完成的,这是更好的。在一些基本测试中,输出似乎仍然是有序的。即使
IOrderedQueryable.AsEnumerable()
只返回一个
IEnumerable

是,它是有保证的
AsEnumerable
只是一个简单的仅向前的包装器(而
IORDerenumerable
实际上只是一个标记接口)。

…为什么?那么IEnumerable和IORDerenumerable之间有什么区别呢?@Kurian方法,比如
ThenBy
需要
IORDerenumerable
。调用
AsEnumerable
不会有某种“洗牌”函数,所以我认为它保留顺序是安全的。@Enigmativity是的,即使调用Concat之类的函数也会保持顺序,所以我想可以安全地假设IEnumerable不会被随机洗牌。