In LINQ, the interfaces IEnumerableT> and IQueryableT> allow you to perform querying operations on a collection of data.   The primary distinction between IEnumerableT> and IQueryableT> is how they execute a query. IEnumerableT> uses the local data source to execute a query in memory. This means that the entire data source is retrieved before running the query on it.   IQueryableT>, on the other hand, delays query execution until it is enumerated. It denotes a query that can be run against a data source. When a query is enumerated, it is executed against the underlying data source (Database, Web Service, etc.).   This means that you can use IQueryable to build the query dynamically and only send the resulting query command to the server. Data is pulled in first and then filtered in memory using IEnumerable.   To summarize, IEnumerable is used for LINQ queries against in-memory collections, whereas IQueryable is used for LINQ queries against a data source. IQueryable is better for large data sets and optimizing database queries, while IEnumerable is better for in-memory data sources and small amounts of data.