Do LINQ's Enumerable Methods Maintain Relative Order of Elements?
Say I have List<Foo> foos where the current order of elements is important. If I then apply a LINQ Enumerable method such as GroupBy , Where or Select , can I rely on the resulting IEnumerable<Foo> to iterate in the same relative order as the original list?
Yes, for Enumerable methods (LINQ to Objects, which applies to List<T> you mentioned), you can rely on the order of elements returned by Select , Where , or GroupBy . This is not the case for things that are inherently unordered like ToDictionary or Distinct .
From Enumerable.GroupBy documentation:
The IGrouping<TKey, TElement> objects are yielded in an order based on the order of the elements in source that produced the first key of each IGrouping<TKey, TElement> . Elements in a grouping are yielded in the order they appear in source .
This is not necessarily true for IQueryable extension methods (other LINQ providers).
上一篇: LINQ Orderby降序查询
