Most of the blogs suggest to use IEnumerable
for in-memory collections. Are there any advantages? Can I use IQueryable
for in-memory collections also?
Asked
Active
Viewed 671 times
-1

marc_s
- 732,580
- 175
- 1,330
- 1,459

Himanshu Agarwal
- 99
- 4
-
Why would you want to use it for in-memory collections? You can convert any `IEnumerable` to `IQueryable` with `AsQueryable` but that only introduces unnecessary overhead since almost all method `IQueryable` also exists for `IEnumerable` – Ackdari Dec 16 '20 at 07:44
-
2If there's a measurable difference, it'll be that IQueryable is slower - because it works in terms of expression trees which means some compilation is postponed until runtime. – Damien_The_Unbeliever Dec 16 '20 at 08:04
2 Answers
2
Check IQueryable documentation
public interface IQueryable : System.Collections.IEnumerable
IQueryable
implements IEnumerable
, so you can do whatever you can with IEnumerable
and more.
Check the differences here: Returning IEnumerable<T> vs. IQueryable<T>
Basically:
IQueryable
-> Linq to SqlIEnumerable
-> Linq to Objects
If it's not SQL or any other data source (not objects), then you have no reason to use IQueryable
.

marc_s
- 732,580
- 175
- 1,330
- 1,459

Athanasios Kataras
- 25,191
- 4
- 32
- 61
0
This is kind of an oversimplification, but IQueryable basically is a marker interface for APIs that translate the IQueryable calls to queries for a particular storage engine, such as a database.
Querying a List<T>
or other collection with IQueryable extension methods is not going to turn that into database calls, because the storage isn't a database; it's in application memory and will be executed by the runtime.

CodeCaster
- 147,647
- 23
- 218
- 272