lookup vs. groupby [duplicate]

Solution 1:

ToLookup uses immediate execution, and returns an ILookup which allows you to look the groups up by key.

GroupBy uses deferred execution, and just returns you groups in the order in which each group was first encountered (so the first group will contain the first element of the source data, for example), with no idea of being able to look the groups up later by key. Each time you iterate over the results, it will have to group again.

Basically, which you should use depends on what you're going to do with the results. If you're just going to iterate over them a single time (e.g. for further transformation), GroupBy is usually fine. If you want to keep them as a collection for multiple operations, the immediate nature of ToLookup is useful.

Solution 2:

  1. ToLookup is buffered. groupBy iterates the groups.
  2. groupBy uses deffered execution while ToLookup uses immediate.