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 eachIGrouping<TKey, TElement>
. Elements in a grouping are yielded in the order they appear insource
.
This is not necessarily true for IQueryable
extension methods (other LINQ providers).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With