.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不会被随机洗牌。