问题
I'm simply wondering why there is a IQueryable<T>
version without the generic capability ?
回答1:
The generic
IQueryable<T>
is the one you use most often in method signatures and the like. The non-genericIQueryable
exist primarily to give you a weakly typed entry point primarily for dynamic query building scenarios.
by Matt Warren from LINQ: Building an IQueryable Provider - Part I
You should use generic IQueryable<T>
everywhere it's possible.
回答2:
I imagine it's the same reason as Jon Skeet gives in Difference between IEnumerable and IEnumerable<T>? , to allow use in a foreach
loop. IQuerable
would be castable to IEnumerable
, whereas IQueryable<T>
would not.
Also see Marcin's answer about use in dynamic query building scenarios.
来源:https://stackoverflow.com/questions/18535017/iqueryable-vs-iqueryablet