Using ToList() on Enumerable LINQ query results for large data sets - Efficiency Issue?
===

I've been making a lot of use of LINQ queries in the application I'm currently writing, and one of the situations that I keep running into is having to convert the LINQ query results into lists for further processing (I have my reasons for wanting lists).

I'd like to have a better understanding of what happens in this list conversion in case there are inefficiencies since I've used it repeatedly now.  So, given I execute a line line like this:

    var matches = (from x in list1 join y in list2 on x equals y select x).ToList();

**Questions:**

 1. Is there any overhead here aside from the creation of a new list and its population with references to the elements in the Enumerable returned from the query?

 2. Would you consider this inefficient?

 3. Is there a way to get the LINQ query to directly generate a list to avoid the need for a conversion in this circumstance?

