Say a, b, c are all List and I want to create an unsorted union of them. Although performance isn\'t super-critical, they might have 10,000 entries in each
Union is O(n).
a.Union(b).Union(c) is less efficient in most implementations than a.Union(b.Concat(c)) because it creates a hash-set for the first union operation and then another for the second, as other answers have said. Both of these also end up with a chain of IEnumerator objects in use which increases cost as further sources are added.
a.Union(b).Union(c) is more efficient in .NET Core because the second .Union() operation produces a single object with knowledge of a, b and c and it will create a single hash-set for the entire operation, as well as avoiding the chain of IEnumerator objects.