<t>Yes, both will give you deferred execution.<br/>
<br/>
The difference is that IQueryable is the interface that allows LINQ-to-SQL (LINQ.-to-anything really) to work. So if you further refine your query on an IQueryable, that query will be executed in the database, if possible. <br/>
<br/>
For the IEnumerable case, it will be LINQ-to-object, meaning that all objects matching the original query will have to be loaded into memory from the database.<br/>
<br/>
In code:<br/>
<br/>
IQueryable custs = ...;<br/>
// Later on...<br/>
var goldCustomers = custs.Where(c => c.IsGold);<br/>
<br/>
```<br/>
<br/>
That code will execute SQL to only select gold customers. The following code, on the other hand, will execute the original query in the database, then filtering out the non-gold customers in the memory:<br/>
<br/>
```<br/>
IEnumerable custs = ...;<br/>
// Later on...<br/>
var goldCustomers = custs.Where(c => c.IsGold);<br/>
<br/>
```<br/>
<br/>
This is quite an important difference, and working on [`IQueryable`](https://msdn.microsoft.com/en-us/library/bb351562.aspx) can in many cases save you from returning too many rows from the database. Another prime example is doing paging: If you use [`Take`](https://msdn.microsoft.com/en-us/library/bb300906.aspx) and [`Skip`](https://msdn.microsoft.com/en-us/library/bb357513.aspx) on [`IQueryable`](https://msdn.microsoft.com/en-us/library/system.linq.iqueryable.aspx), you will only get the number of rows requested; doing that on an [`IEnumerable`](https://msdn.microsoft.com/en-us/library/9eekhta0.aspx) will cause all of your rows to be loaded in memory.</t>